java继承问题

hear_windows 2012-03-24 02:43:53
class Father{
public void hitChild(){
System.out.println("臭崽子,你站着,不打你我不是你爹!");
}
}
class Son1 extends Father{
public void hitChild(){
System.out.println("为什么打我?我做错了什么!");
}
}
class Son2 extends Son1{
public void hitChild(){
System.out.println("我知道错了,别打了!");
}
}
class Son3 extends Son2{
public void hitChild(){
System.out.println("我跑,你打不着!");
}
}
public class Interface_1 {
public static void main(String args[]){

Son3 s = new Son3();
s.hitChild();
}

}
最后打印的结果是:我跑,你打不着!
------------------------------------------------------------
为什么不是: 臭崽子,你站着,不打你我不是你爹!
为什么打我?我做错什么了!
我知道错了,别打了!
我跑,你打不着!
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hear_windows 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 andy188 的回复:]

Son3 重写了 Son2 的 hitChild(), Son2 重写了 Son1的 hitChild(), Son1 重写了 Father的 hitChild();

Son3 s = new Son3();
s.hitChild();

s是Son3类的对像,当你会是在Son3类内先找hitChild()方法,如果找到了,就调用,不再往上找;如果找不到,就调用父类的hitChild……
[/Quote]
继承对于父类的修改和新功能的增加前提不是不修改旧的功能(旧的功能仍然可以使用,旧类的代码也不做修改)吗?
dengxinlovedx 2012-03-24
  • 打赏
  • 举报
回复
不知道楼主是不是想要看看继承的创建过程。当调用子类的构造器时就自动向上找到父类构造器,以此类推,因此把程序改成下面这样就可以得到你想要的结果了。

class Father{
Father(){
System.out.println("臭崽子,你站着,不打你我不是你爹!");
}
}
class Son1 extends Father{
Son1(){
System.out.println("为什么打我?我做错了什么!");
}
}
class Son2 extends Son1{
Son2(){
System.out.println("我知道错了,别打了!");
}
}
class Son3 extends Son2{
Son3(){
System.out.println("我跑,你打不着!");
}
}
public class Interface_1 {
public static void main(String args[]){

Son3 s = new Son3();

}

}

hz_kevin88 2012-03-24
  • 打赏
  • 举报
回复
如果把输出内容放到构造函数里,
则输出就是你要的,呵呵
lyb_sunrain 2012-03-24
  • 打赏
  • 举报
回复
回去好好把继承看一遍再问别人
andy188 2012-03-24
  • 打赏
  • 举报
回复
Son3 重写了 Son2 的 hitChild(), Son2 重写了 Son1的 hitChild(), Son1 重写了 Father的 hitChild();

Son3 s = new Son3();
s.hitChild();

s是Son3类的对像,当你会是在Son3类内先找hitChild()方法,如果找到了,就调用,不再往上找;如果找不到,就调用父类的hitChild()方法,一直往上找。

62,614

社区成员

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

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