this 与 方法重写 的烦恼!!!求助!!

lwtbn1 2011-10-17 03:36:59

class Father{
private void hello(){
System.out.println("hello father!");
}
public void f1(){
this.hello();
}
}

class Son extends Father{
public void hello(){
System.out.println("hello son!");
}
}

public class Test{
public static void main(String[] args){
student1.f1();
}
}


结果会输出:hello father!;
这是怎么回事呢?
...全文
95 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
leilei0932_java 2011-10-17
  • 打赏
  • 举报
回复
Son继承了Father,也就拥有了Father的f1()方法,因为自己本身没有此方法,则调用时会调用父类的f1()方法,而在f1()方法中有调用了当前类(这里this代表Father)的hello()方法,则最终答案是"hello father!"
clementxr 2011-10-17
  • 打赏
  • 举报
回复
子类是不继承父类private方法的,所以只调用父类的hello方法。
你要是想得到hello son的结果,只要把peivate改成public就可以了
阳明 to life 2011-10-17
  • 打赏
  • 举报
回复
继承了父类的方法包括私有的
lwtbn1 2011-10-17
  • 打赏
  • 举报
回复
父类中函数f1()中的this指的不是当前子类对象吗?然后会寻找子类中的hello()方法!!不是这样吗?[Quote=引用 10 楼 pengpeng107 的回复:]

Son对象没有f1();当然要去找父类中的方法了
[/Quote]
pengpeng107 2011-10-17
  • 打赏
  • 举报
回复
Son对象没有f1();当然要去找父类中的方法了
lwtbn1 2011-10-17
  • 打赏
  • 举报
回复
嗯!!太仓促了!!真是不好意思!![Quote=引用 8 楼 huang_1106 的回复:]

应该是Son student1 = new Son(); 吧
[/Quote]
clementxr 2011-10-17
  • 打赏
  • 举报
回复
应该是Son student1 = new Son(); 吧
lwtbn1 2011-10-17
  • 打赏
  • 举报
回复
main方法中是:Son s1 = new Son();s1.f1();
XC2010_K 2011-10-17
  • 打赏
  • 举报
回复
这个程序能运行,还能输出hello father!???
fuguitong163 2011-10-17
  • 打赏
  • 举报
回复
这段代码好像不完整啊
lwtbn1 2011-10-17
  • 打赏
  • 举报
回复
搞错了 !!
lwtbn1 2011-10-17
  • 打赏
  • 举报
回复
不好意思!发帖时忘了一句:Student student1 = new Student();
wtc860104 2011-10-17
  • 打赏
  • 举报
回复
看不懂你写的啥
编译能通过???
能运行???
pengpeng107 2011-10-17
  • 打赏
  • 举报
回复
student1 哪来的?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧