Đó là một trong những lý do chính bạn sử dụng thừa kế. Bạn đối xử với SuperClass như là một trừu tượng, và tại thời gian biên dịch bạn không cần phải biết loại có nguồn gốc, hoặc lớp khác không cần phải biết loại có nguồn gốc. Điều này cho phép bạn sử dụng các tham chiếu đến SuperClass trong khi sử dụng đa hình để gọi các phương thức của lớp dẫn xuất.
này cho phép bạn
a.) Tạo các nhà máy do đó bạn không cần phải biết loại tại thời gian biên dịch, và bạn có một số phương pháp runtime mà tạo ra các loại có nguồn gốc. Hãy suy nghĩ COM, GStreamer, DirectShow, Glib, vv ...
b.) Ẩn sự phức tạp với các đối tượng khác bằng cách chỉ hiển thị tham chiếu kiểu cơ sở mặc dù chúng là trường hợp của kiểu dẫn xuất. Hãy suy nghĩ về các phương thức trả về đối tượng hoặc lấy một tham chiếu đối tượng làm đối số.
c.) Nhiều khả năng khác, nhưng đó có thể là hai khả năng phù hợp nhất với bạn.
Nguồn
2012-04-16 16:02:34
Điều quan trọng ở đây là 'SubClass' * là * một' SuperClass'. –
Hành vi này có thay đổi trong Java 8 không? Tôi vừa thử nghiệm trường hợp một phương thức lấy tham số superclass 'void method (superClass param)' nhưng tôi có thể đặt trong một thể hiện subclass 'SubClass sub = new SubClass();' khi tôi gọi nó, như trong 'method (phụ); Điều này có nghĩa là khả năng tương thích trở lên hiện được cho phép? –