6 个回答

public void a(){
     b();
}
等效于
public void a(){
     this.b();//你要清楚此处的this是指的是调用者!!!!
}

你在子类中重写了父类的方法。加@override有利于在编译期间就检查父类是否有该方法,所以如果是重写,最好写上@override。

创建子类的对象, 在调用方法时,
如果子类没有重写, 调用父类方法;
子类已重写, 调用子类.
原则上是 先从本类中找方法, 然后一层一层往上找.

你实际new出来的是Child,而不是Parent。简单的说明就是,从实际对象开始,一层一层往上找,找到的第一个就是要调用的方法。

Core Java 基本概念

你的子類重寫了父類的b()方法,因此子類調用的是自己重寫的方法,沒有被重寫的方法則繼承父類的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题