【问题标题】:How many objects Java Virtual Machine creates? [duplicate]Java 虚拟机创建了多少个对象? [复制]
【发布时间】: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


【解决方案1】:

您仍然只有一个 Dog 实例,无论它实现的接口或扩展的类如何。

【讨论】:

    【解决方案2】:

    不管你的类实现了多少个interfaces,在这种情况下创建的实例数只是一个。每当您有疑问时,您应该考虑是否可以实例化interfaceabstract class,您会得到,NO 作为答案。因此,创建的实例数量与您使用具体类创建的一样多,在本例中为 Dog

    【讨论】:

      【解决方案3】:

      回答你最后一个问题:我们称之为多态性

      如果你对它们都有相同的属性,它将使用属于 Dog 类的属性

      【讨论】:

        猜你喜欢
        • 2014-11-26
        • 1970-01-01
        • 2014-08-01
        • 2021-08-11
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多