子类实例化,父类构造器中被调用被子类重写的方法,会执行父类还是子类的呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子类实例化,父类构造器中被调用被子类重写的方法,会执行父类还是子类的呢?相关的知识,希望对你有一定的参考价值。

public class Test001 {

public static void main(String[] args) {
new Child();
}

}
class Father{
private String name = "f";
public Father(){
tell();
}
public void tell(){
System.out.println("father "+this.name);
}
}
class Child extends Father{
private String name = "c";
public Child(){
tell();
}
public void tell(){
System.out.println("child "+name);
}
}

 

child null
child c

说明子类实例化,先实例化父类对象,即先将父类变量初始化,然后调用父类构造函数,不过此时如果父类构造器调用的被子类重写的方法,则调用的是子类的方法。此时的name也是子类的name,因为此时子类变量尚未实例化,所以值为null;

以上是关于子类实例化,父类构造器中被调用被子类重写的方法,会执行父类还是子类的呢?的主要内容,如果未能解决你的问题,请参考以下文章

java如何调用父类的父类中被覆盖的方法

java中,当实例化子类时会递归调用父类中的构造方法。这个说法对么?为啥

抽象类和抽象方法

Java学习笔记:面向对象

子类可以继承父类的啥

子类可以继承父类的啥