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 ×1