【问题标题】:Parent class extended by multiple child classes, are there going to be multiple instances of parent class created for each child class? [duplicate]由多个子类扩展的父类,是否会为每个子类创建多个父类实例? [复制]
【发布时间】:2017-11-05 20:44:33
【问题描述】:

如果一个父类由多个子类扩展,并且所有子类都并行运行,是否会在运行时为每个子类创建多个父类实例?只是好奇。

为了清楚地理解,让我们考虑下面的代码。

父类:

public class Parent {

    public String a = "Parent";

}

儿童班 1:

import org.testng.annotations.Test;

public class Child1 extends Parent {

    @Test
    public void child1() {

        a = "Child1";
    }
}

儿童 2 班:

import org.testng.annotations.Test;

public class Child2 extends Parent {

    @Test
    public void child1() {

        a = "Child2";
    }
}

在这里,我想了解 Child1 和 Child2 类是否并行运行,是否会分别为 Child1 和 Child2 为父类创建两个单独的实例(内存空间),或者两者将共享父类的公共实例(内存空间)?

【问题讨论】:

  • “将为父类创建两个单独的实例(内存空间)”是什么意思?如果您创建new Child1() 实例,则它是 Child1 类的一个实例(它可以被视为 Parent 类型的 表示,但它仍然是 Child1 而不是 Parent 的实例)。 “Child1 和 Child2 并行运行”是什么意思?

标签: java inheritance parent-child extends


【解决方案1】:

是否会创建多个父类实例 每个子类在运行时?

简短的回答是否定的。

在这种情况下,Java 只会创建两个实例——两个子类。每当您使用 extends 关键字时,您都会告诉 Java 扩展对象的蓝图,而不是对象本身,这意味着如果谈到内存分配,实例之间是完全独立的。

【讨论】:

  • 谢谢@DayloZatorsky,这正是我想知道的。 :)
猜你喜欢
  • 2022-12-15
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 2021-03-14
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多