【发布时间】:2021-05-01 18:35:27
【问题描述】:
Java 中的所有类默认扩展 Object
public class Dog{
public Dog()
}
public static void main(String args[]){
Dog dog = new Dog();
}
如果我编译这段代码,JVM 将在堆 1-Object 2-Dog 上创建 2 个类。如果 Dog 类实现了一个接口并扩展了一个抽象类会发生什么?
public interface Animal{
}
public abstract class Mammal{
}
在这种情况下,Dog 将实现 Animal 接口并扩展 Mammal 抽象类:
public class Dog extends Mammal implements Animal{
public Dog();
}
当我现在像以前一样创建 Dog 对象时,JVM 将在堆上创建多少对象?
public static void main(String args[]){
Animal Dog = new Dog();
}
如果我用 Animal 类型创建 Dog,会有什么变化?
【问题讨论】:
-
当您创建一个新的
Dog时,没有单独的类Object和类Dog的实例。只有一个对象。不管Dog实现了多少个接口类,或者它扩展了什么类,它仍然是一个单一的对象。
标签: java object inheritance virtual-machine