Đây chỉ là một câu hỏi hết sức tò mò.Đa hình Java
Tôi biết rằng khi chúng ta gọi phương thức ghi đè của đối tượng lớp con bằng tham chiếu của siêu lớp của nó, JVM cho tầm quan trọng đối với loại đối tượng chứ không phải kiểu tham chiếu.
Đây là mã đơn giản của tôi:
class Animal
{
void eat()
{
System.out.println("Animal is eating...");
}
}
class Horse extends Animal
{
@Override
void eat()
{
System.out.println("Horse is eating...");
}
}
public class PolymorphismTest
{
public static void main(String...args)
{
Animal a=new Animal();
a.eat();
Animal h= new Horse();
h.eat();
}
}
Đúng như dự đoán, tôi nhận được kết quả:
run:
Animal is eating...
Horse is eating...
BUILD SUCCESSFUL (total time: 0 seconds)
Bây giờ câu hỏi của tôi là, Có cách nào mà chúng ta có thể sử dụng tài liệu tham khảo h gọi phương thức superclass eat() và không phải là lớp con? Tôi biết đây là một câu hỏi có phần chống lại các định luật đa hình nhưng bạn không bao giờ biết khi nào nhu cầu có thể phát sinh để làm như vậy.
Tôi đã cố gắng định kiểu tham chiếu h thành Animal nhưng không may mắn. Bất kỳ ý tưởng?
có thể trùng lặp của http://stackoverflow.com/questions/5411434/how-to-call-a-superclass-method-using-java-reflection –
Và cũng có thể trùng lặp của http: // stackoverflow. com/questions/1032847/can-java-call-parent-ghi đè-phương thức-in-other-objects-nhưng-không-subtype –
Tôi đồng ý. Xin lỗi vì không đi qua nó. Tôi đã làm một số nghiên cứu nhưng không thể tìm thấy điều này. – Kameron