请教,java方法重写问题


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方法。
你在父类构造方法中加一个输出,你就能看出来,父类构造方法被执行了两次。(一次创建子类对象时,一次创建父类自身对象时)
img
如有帮助,望点击我回答右上角【采纳】按钮支持一下。

你的Test类不是继承Test002嘛
然后又重写了method方法
new了一个Test
Test类中method方法被重写了
所以输出的是Test

Test类继承Test002 子类重写父类方法创建实例默认调用子类自己的方法
父类创建实例也是自己的就近原则,如果父类new子类那就还是子类的方法