首页 > 试题广场 >

下面 Java 代码的运行结果为() class Paren

[单选题]
下面 Java 代码的运行结果为()
class Parent {
    public String name = "Parent";
    public Parent() {
        sayName();
    }
    public void sayName() {
        System.out.println("say hi in parent : " + name);
    }
}

class Son extends Parent {
    public String name = "Son";
    public Son() {
        sayName();
    }
    public void sayName() {
        System.out.println("say hi in Son : " + name);
    }
}

public class Test {

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

}
  • say hi in parent : Parent
  • say hi in son : Son
  • say hi in parent : Parent
    say hi in son : Son
  • say hi in son : null
    say hi in son : Son
首先 进行实例化子类Son ,然后去执行父类的无参构造器(父类没有有参构造器的前提下)、父类的无参构造器中执行了sayName非静态方法,非静态方法是由实例对象决定的 这里实例对象是Son,所以执行Son中的sayName方法 ,Son中的成员变量还没进行初始化 所以为null。
执行完父类中,然后初始化Son中的成员,执行无参构造器、执行sayName方法 ,这时name已经完成了初始化 。输出say hi in Son : Son


个人理解
发表于 2025-05-07 22:12:34 回复(0)