public class Test extends Test002 {
public static void main(String[] args) {
new Test();
new Test002();
}
public void method(){
System.out.println("test");
}
}
class Test002 {
public Test002(){
method();
}
public void method(){
System.out.println("test002");
}
}
输出:
test
test002
为啥第一个输出的是test?
因为子类自己定义了method方法,所以输出子类自身的方法。
创建子类对象时,会先执行父类构造方法,父类构造方法调用了 method()方法,由于子类重写了method方法,所以执行的是子类中的method方法。
你在父类构造方法中加一个输出,你就能看出来,父类构造方法被执行了两次。(一次创建子类对象时,一次创建父类自身对象时)
如有帮助,望点击我回答右上角【采纳】按钮支持一下。
你的Test类不是继承Test002嘛
然后又重写了method方法
new了一个Test
Test类中method方法被重写了
所以输出的是Test
Test类继承Test002 子类重写父类方法创建实例默认调用子类自己的方法
父类创建实例也是自己的就近原则,如果父类new子类那就还是子类的方法