在实例化Java对象时,是否自动创建父类的对象?

在实例化Java对象时,是否自动创建父类的对象?,java,java-memory-model,Java,Java Memory Model,假设我创建了一个对象,并且运行了父类的一个构造函数。使用此构造函数,父对象的新对象也会在幕后创建 如果不是,父类的私有字段存储在哪里?实际上,您可以调用父对象的任何方法(带或不带super),该方法操作调用对象不可见的私有字段 如果有人最熟悉Java内存模型,欢迎他或她的回答 使用此构造函数,父对象的新对象也会在幕后创建 不,只创建了一个实例。创建的实例包含当前类及其所有超类的属性 如果没有,父类的私有字段存储在哪里 与所有类属性一样,它们存储在堆上。如果它们是在当前类或超类中定义的,则在内存位

假设我创建了一个对象,并且运行了父类的一个构造函数。使用此构造函数,父对象的新对象也会在幕后创建

如果不是,父类的
私有
字段存储在哪里?实际上,您可以调用父对象的任何方法(带或不带
super
),该方法操作调用对象不可见的私有字段

如果有人最熟悉Java内存模型,欢迎他或她的回答

使用此构造函数,父对象的新对象也会在幕后创建

不,只创建了一个实例。创建的实例包含当前类及其所有超类的属性

如果没有,父类的私有字段存储在哪里


与所有类属性一样,它们存储在堆上。如果它们是在当前类或超类中定义的,则在内存位置方面没有区别。

它不创建两个对象,只创建子类对象

从另一个类继承时,必须在构造函数中调用super()。如果您不这样做,编译器将为您插入调用,您可以清楚地看到


调用超类构造函数的原因是,否则对象将处于未初始化状态。

记住继承是基类和子类之间的“is a”关系,因此每次有子类的实例时,根据定义,也会有基类的实例(作为实例的一部分,而不是作为两个单独的实例)。要正确初始化基类,将调用构造函数。

假设“父类”是指“超类”,任何类的对象都是其超类的对象。只有一个对象。请查看
堆栈
+1每个类都可以有同名的字段,私有或公共。它们都位于一个对象中。