如题:
有一个父类  A{…………}
      子类  B extends A { …………}
     
现在   B b = new B()问: 有几个对象? 在内存中是如何表示的?

解决方案 »

  1.   

    http://blog.csdn.net/ZangXT/archive/2009/09/24/4587985.aspx
    1个,我博客里画了个图
      

  2.   

    ZangXT 说的很好,看样子我过去的理解都要颠覆了杯具了
    『传说中的“父类对象”或许是指Base.i这个东西吧。我不知道没有了字段和Klass指针的几个成员是否有资格叫做“对象”』(ZangXT原话)。
      

  3.   

    看样子我是把引用和对象的概念没区分好
    我的理解是:
    堆中的一个对象((superAttribute)subAttribute) 
    父类引用引用了其中一部分
    子类引用引用了全部;含有同名属性的话,子类引用在不强转成父类的话无法显式引用父类的属性。
    不知道是否正确
      

  4.   

    这也就是说着子类构造里的父类构造并不是完全构造,只是把父类需要的空间给开了后再交给子类把子类的需要的空间给添加上后再打上字段。此时才是真正构造完一个可以称之为“对象”的对象;ZangXT大侠 是这个意思么
      

  5.   

    可恶的面试题,扣这种东西有用么,我说有100个对象,好吧,很占内存吧,那就不要用 new了,全部用单例吧......
      

  6.   

    可以说是2个对象
    也可以说是一个对象
    一个对象就是 b
    2个对象就是 b 里 还含有 一个父类的对象liang ge