那我也纠正8楼的一些错误观点吧。
new B() 没有创建一个A对象与一个B对象,而是创建了一个既属于A也属于B的一个对象,这很好理解么,例如一个类叫衣服,另一个类叫衬衫继承衣服,如果买一件衬衫是实例化的话,我买这个衬衫难道能叫我买了衬衫与衣服两个东西么?当然,你可以自以为是的说java就是这么实现的,那请你研究好了,有根据了再说好么,别想当然.....。
另外,还想说明的是,构造函数并不完成开辟内存空间的责任,它只完成初对象初始化的工作,B对象确实会调用A对象的构造函数,但是并不代表就会开辟内存空间再生成一个A对象。