gpt4 book ai didi

java - JVM 如何管理 Java 接口(interface)?

转载 作者:行者123 更新时间:2023-11-29 06:32:43 25 4
gpt4 key购买 nike

假设有一个没有任何方法或属性的基类,如下面的class Base

public abstract class Base {
public Base() {}
}

我们还有另一个派生自 class Base 的类,比如 class Concrete。据我所知,当我们创建 Concrete 类的实例时,会创建两个实例:第一个是 class Base ,第二个是 class Concrete。考虑以下代码,创建了 200 个实例。

for(int i = 0; i < 100; i++)
Concrete c = new Concrete();

对于上述情况,让class Base成为接口(interface)有意义吗?如果我们这样做,将创建多少个实例,100 个还是 200 个?换句话说,接口(interface)是所有类实例通用的,还是每个类实例都有自己的接口(interface)实例?

最佳答案

如果为派生类创建实例,则不会为抽象类创建单独的实例。只会调用默认构造函数来初始化类(这里意味着它将为字段分配默认值)。

如果您检查同一对象上两个类的 instanceof 运算符,您将得到真实的响应。

如果你的抽象类有两个不同的子类,当你实例化它们时,它们的构造函数将被调用,然后父构造函数将被调用,字段将被初始化。

如果你什么都不做,父类的默认构造函数将被调用。但是,您可以使用 super 关键字在父类上调用特定的构造函数。

关于java - JVM 如何管理 Java 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com