当我们在Java中实例化特定类时,是否会创建超类的实例。如果是这种情况,那么实例化所有超类将有很多开销。我尝试了以下代码:
public class AClass {
public AClass() {
System.out.println("Constructor A");
}
}
public class BClass extends AClass{
public BClass(){
System.out.println("Constructor B");
}
}
public class Test {
public static void main(String[] args) {
BClass b = new BClass();
}
}
代码的输出为:
Constructor A
Constructor B
那么,这是否意味着当我们实例化一个类时,就创建了超类对象的完整层次结构?
创建了一个对象-但该对象是超类和子类(及其java.lang.Object
本身)的实例。没有三个单独的对象。一个对象具有一组字段(基本上是在层次结构中上下声明的所有字段的并集)和一个对象标头。
该构造函数执行所有在继承层次结构的方式-但this
参考值将是所有这些构造相同; 它们都为单个对象的初始化做出了贡献。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句