…已知其超类的构造函数(例如A和B(B扩展了A))将被实例化…
类被实例化。构造函数被 调用 。
(在编辑中建议应为“实例化对象”;但是,从技术上讲,这是不正确的。根据下面链接的同一JLS部分:“在评估类实例创建表达式时显式创建了新的类实例。导致实例化一个类。”即,您实例化一个类以获得一个对象。一个对象是一个实例。您不实例化对象。)
1)是否为A的实例,B的实例和C的实例分配了单独的内存?
不,有 一个 类 的 实例。即一块内存。
2)对于子类C的实例,除了它自己的字段之外,是否还为从B和A继承的字段分配了所有物理内存?
是的:“无论何时创建新的类实例,都会为其分配存储空间,并为该类类型中声明的所有实例变量和该类类型的每个超类中声明的所有实例变量(包括可能隐藏。”
3),那么B的实例除了它自己的实例之外,还具有从A继承的字段的物理内存吗?
从1开始,在这种情况下没有“ B的实例”。只有一个实例。
资料来源:12.5。创建新的类实例,JLS
7
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)