小编Mr.*_*Sky的帖子

创建新的子类对象时是否存在超类实例?

JVM是否在创建新的子类对象时创建超类实例?在下面的例子中为什么super.setName("Buddy")成功?是否有Pet创建后的实例new Dog()

public class MainDemo {
    public static void main(String[] args) {
        Pet pet = new Dog();
        System.out.println(pet.getName());//it will print Buddy
    }
}
public class Pet {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class Dog extends Pet {
    public Dog() {
        super.setName("Buddy");
    }
}
Run Code Online (Sandbox Code Playgroud)

我改变了Dog and Pet的构造函数,如下所示

public Pet() {
    System.out.println("this is Pet's constructor");
}
public Dog() {       
    super.setName("Buddy"); …
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
1
解决办法
356
查看次数

标签 统计

java ×1