这是上下文:有2个类:Person
和Student extends Person
类 Person 有 1 个方法:
print(Person x) {System.out.println("Person")}
(1)
学生类有2个方法:
print(Student x) {System.out.println("Student")}
(2)
和
print(Person x) {System.out.println("Override")}
(3)
然后我有:
Person p = new Student();
Student s = new Student();
p.print(s); // prints 'Override' (*)
我从讲座中得到的解释是:因为声明类型是Person,所以编译器会选择方法(1)。但是运行时类型是Student,所以方法(3)覆盖了它。
我的问题是:为什么方法(2)没有覆盖?这里的参数类型是 Student(从 (*) 行开始),方法 (2) 应该是最重要的吗?
非常感谢你们。我感谢你所有的答案