各位好:
最近在课本上看到一个范例,自己试着打了一下
对于最后的结果有些疑,po上来问请问一下大家
code:
public class Test {
public static void main(String[] args) {
new Person().printPerson(); // Person
new Student().printPerson(); // Person
}
}
class Student extends Person {
private String getInfo() {
return "Student";
}
}
class Person {
private String getInfo() {
return "Person";
}
public void printPerson() {
System.out.println(getInfo());
}
}
result:
Person
Person
问题:
简单来说,Student继承Person,由于printPerson()是public
所以class Student内有继承到printPerson()
但是getInfo()在Person内是private,所以class Student内没有继承到getInfo()
于是class Student内自行定义了一个自己的getInfo()
然后呼叫new Student().printPerson()
printPerson()内会去呼叫getInfo()函数
请问为什么呼叫的getInfo()函数
不是class Student内自行定义的getInfo()
而是其superclass Person内的getInfo()呢?
谢谢!