由多个子类扩展的父类是否会为每个子类创建多个父类实例?

时间:2017-11-05 20:44:33

标签: java inheritance parent-child extends

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

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

家长班:

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分别创建两个单独的实例(内存空间),或者两者都将共享Parent类的公共实例(内存空间)?

1 个答案:

答案 0 :(得分:1)

  

是否会为其创建多个父类实例   每个孩子班在运行时间?

简短的回答是否定的。

问题是Java在这种情况下只会创建两个实例 - 两个子类。无论何时使用extends关键字,都要告诉Java 扩展对象的蓝图,而不是对象本身,这意味着如果要谈论内存分配,实例完全是彼此独立的。