作者minGW128 (minGW128)
看板java
标题[J2SE] private method在subclass内的表现
时间Tue Sep 2 13:01:20 2014
各位好:
最近在课本上看到一个范例,自己试着打了一下
对於最後的结果有些疑,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()呢?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.136.228.159
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1409634083.A.29A.html
1F:→ ssccg: private不会被继承所以不会被override 09/02 13:03
嗯嗯这我知道,但是我还是不了解
为什麽new Student().printPerson(),printPerson()会去呼叫getInfo()
为什麽不会呼叫Studnet自己定义的getInfo()
而会去呼叫到superclass Person内的getInfo()
※ 编辑: minGW128 (220.136.228.159), 09/02/2014 13:06:58
2F:→ swpoker: 不可见就连继承都不可能~getInfo是各类别自己专属的 09/02 14:17
3F:→ ssccg: 从Student的参考呼叫,printPerson()还是Person的 09/02 16:11
4F:→ ssccg: 并没有复制一份到Student然後改呼叫Student的getInfo() 09/02 16:12
5F:→ future314: 有override才有动态系结 09/02 21:01