当我们在Java中有两个类,一个继承自另一个类时,派生类的对象是否会占用与基类中的数据成员相等的空间以及派生类本身的成员?
答案 0 :(得分:1)
在调用构造函数之前,已知类的内存需求。 JVM首先为声明的类及其所有派生类中的fileds分配内存,然后调用构造函数。为了填充对象值和方法,它是关于Stack and the Heap。
的全部内容一旦ObjectB继承ObjectA,他就会调用ObjectA超级方法(构造函数):
class ObjectB extends ObjectA {
public ObjectB() {
super();
}
}
然后,您的Java程序将调用ObjectA构造函数并初始化其自己的方法:
class ObjectA {
public ObjectB() {
// Some code
}
}
因此,在包含初始化的每一行中,数据都将写入堆,因此填充每个初始化内部对象大小的另一个预先要求的内存。考虑到ObjectA也会从'Object' class继承,因为根据定义它是每个Java对象必须的,即使你没有通过电话' super()'你自己的方法,它将在幕后完成。