作者c1w7c (菜英文没有18%%)
看板java
标题Re: [J2SE] private method在subclass内的表现
时间Sun Jul 7 02:01:00 2019
※ 引述《minGW128 (minGW128)》之铭言:
: 各位好:
: 最近在课本上看到一个范例,自己试着打了一下
: 对於最後的结果有些疑,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()呢?
: 谢谢!
可以请教各位大大吗
这题我看下面留言的解释还是不太懂(新手...
我一直有个点转不过来
printperson 不是被class student继承了
那student这个类别 应该可以使用
printperson方法吧?!那为何student类别里的 getInfo方法 不能呼叫呢?
谢谢各位!
-----
Sent from JPTT on my LGE LG-H930.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.138.30.56 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1562436062.A.B8C.html
1F:→ PTTTTTTTT: person里面的getInfo是private 所以student 里面的get 07/07 04:52
2F:→ PTTTTTTTT: Info无法override 07/07 04:52
3F:→ PTTTTTTTT: 所以printperson里面呼叫getInfo只会呼叫到person里的 07/07 04:54
4F:→ c1w7c: 无法override 就没有动态系结的意思吗 07/07 12:44
5F:→ kogrs: private若还可以overwrite,不就可怕了?还有private的意义吗 07/07 15:20