扩展:
B派生自A,那么显然B是A的扩展,也就是说B具备所有A具备的特性,
而且还有自身的特性,因此从类的实例化后的占用空间来看,B的对象空间比A的对象要大,
而且空间的一部分结构是和A一致的。A *a=new B();这个指定了a是A类型的指针,
但是实例化是来自B,因此new B()这句话产生的类空间有一部分B自由特性的东西a将无法应用到,
那么a所指向的空间智能访问到B里面派生自A类的部分,其余部分将被丢弃,这些丢弃的空间会在以后分配给其它资源作者: ゞ灬伊夏風 时间: 2013-6-29 15:43
A aa = new B();
aa 应该只能映射到B中和A相同的部分, 就结果来说两者包含的东西应该是一样的作者: 关关雎鸠 时间: 2013-6-30 12:46
这样理解:A是鸟类,B是鸟类中的一类(比如麻雀类);用new B()实例化的对象一定是鸟类对吧,而如果这样写B b = new A()实例化的不一定是麻雀了有可能是乌鸦对吧(鸟类包括所有的)?
至于B b = new B();就不用我说了吧?