public void a(){ b();}等效于public void a(){ this.b();//你要清楚此处的this是指的是调用者!!!!}
你在子类中重写了父类的方法。加@override有利于在编译期间就检查父类是否有该方法,所以如果是重写,最好写上@override。
创建子类的对象, 在调用方法时, 如果子类没有重写, 调用父类方法; 子类已重写, 调用子类. 原则上是 先从本类中找方法, 然后一层一层往上找.
你实际new出来的是Child,而不是Parent。简单的说明就是,从实际对象开始,一层一层往上找,找到的第一个就是要调用的方法。
Core Java 基本概念
你的子類重寫了父類的b()方法,因此子類調用的是自己重寫的方法,沒有被重寫的方法則繼承父類的
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答765 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
6 回答4.6k 阅读✓ 已解决
1 回答7.7k 阅读✓ 已解决
6 回答5.4k 阅读✓ 已解决
1 回答4.9k 阅读✓ 已解决
3 回答4.5k 阅读✓ 已解决
public void a(){
b();
}
等效于
public void a(){
this.b();//你要清楚此处的this是指的是调用者!!!!
}