当前位置: 首页 > 知识库问答 >
问题:

在java中使用new关键字实例化一个类时,层次结构中的每个超级类都得到实例化吗?[副本]

严兴言
2023-03-14

例如,考虑三个类A、B和C。B扩展A和C扩展B。现在C类拥有B的所有可访问方法和字段。

当C的一个实例创建为----C C=new C()时,将为“C”中的实例字段分配堆区域(它还包括“A”和“B”的属性吗?)。当调用超类构造函数时,必须创建一个超类的新对象。对此对象的引用存储在哪里?

实例化类对象时,如何管理类层次结构?

共有1个答案

程钧
2023-03-14

(一个)新实例将为所有三个类的字段分配堆空间。调用超类构造函数并不创建新实例,它只初始化字段。

 类似资料:
  • 有人能解释一下下面的代码是如何毫无例外地工作的吗。我在想,当为星期天创建新实例时,它也会为星期一(星期天内)创建一个新实例,然后再为星期天(星期一内)创建一个新实例,以此类推。。。类似递归的东西,因为它们都是课程周的一部分。但我的理解是错误的,因为下面的代码运行良好。 我有这个疑问,当我读到java枚举。

  • 问题内容: 术语“ 内部类” 通常被认为是“需要一个封闭实例的嵌套类”。但是,JLS声明如下: 8.1.3。内部类和封闭实例 […] 内部类包括本地(第14.3节),匿名(第15.9.5节)和非静态成员类(第8.5节)。 […] 内部类的声明发生在静态上下文中的实例没有词法包围的实例。 也, 15.9.5。匿名类声明 […] 匿名类始终是内部类(第8.1.3节);从来没有(§8.1.1,§8.5.

  • 问题内容: 我知道这个问题听起来很模糊,因此我将通过一个示例来使其更加清楚: 这就是我要做的。你会怎么做?我当然可以这样使用eval(): 但是我宁愿远离eval()。没有eval(),有没有办法做到这一点? 问题答案: 首先将类名放入变量中: 这通常是您将以Factory模式包装的东西。

  • 问题内容: 我有一串 现在我想创建一个类的对象,其中的类名是 类名 这是一样的东西 我想知道怎么做… 问题答案: “使用”将回答您的所有问题。首先使用来获取对象,然后: 如果要实例化使用检索的类,则必须首先要求它提供一个代表我想要的构造函数的对象,然后要求该对象创建一个新对象。该方法在将检索; 然后,我可以通过调用其方法来使用它: 有一种方法似乎可以满足您的要求。 不要使用它 。它将静默地将检查的

  • 问题内容: 我知道Java的泛型在某种程度上逊于.Net。 我有一个泛型类,我确实需要使用无参数构造函数实例化。如何解决Java的局限性? 问题答案: 一种选择是传递(或你感兴趣的任何类型-以任何方式指定适当的引用)并将该值保留为字段: 另一种选择是具有“工厂”接口,然后将工厂传递给泛型类的构造函数。这更加灵活,你无需担心反射异常。

  • 问题内容: 在我的一次采访中,有人问我“我们是否可以实例化一个抽象类?” 我的回答是“不,我们不能。” 但是,面试官告诉我“错了,我们可以。” 我对此有些争论。然后他告诉我自己在家尝试这个。 在这里,我正在创建我的类的实例和抽象类的调用方法。有人可以向我解释一下吗?面试中我真的错了吗? 问题答案: 在这里,我正在创建我的课程的实例 不,你不是在这里创建抽象类的实例。而是要创建抽象类的匿名子类的实例