当创建对象B时,假设调用了默认构造函数
B myObject = new B();
然后,JVM分配具有更多或更少内容的对象:
- 在B中显式声明的每个字段都有足够的内存(每个字段通常大约4-8字节,但是类型和主机系统之间有很大差异)
- 对于A及其祖先继承的每个最终字段,都有足够的内存
- 足够的内存来包含对调度向量的引用(也应约为4-8个字节)
编译器使用调度向量来存储可以在给定对象上调用的每个方法的地址,并且它取决于对象的类,而不是对象本身的实例(毕竟,每个对象B都具有相同的接口!)
因此,您不需要分配A,因为没有单独的对象A。您没有实例化2个单独的对象。创建B时,您正在创建A
..的“专业”版本,可以将其视为A并添加更多内容。因此,仅需要分配B(但请记住,B还具有其祖先拥有的一切)



