面试中遇到的一个问题

Jajiel 2010-04-15 10:32:45
如题:
有一个父类 A{…………}
子类 B extends A { …………}

现在 B b = new B()

问: 有几个对象? 在内存中是如何表示的?
...全文
228 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hepeng_8 2010-04-20
  • 打赏
  • 举报
回复
可以说是2个对象
也可以说是一个对象
一个对象就是 b
2个对象就是 b 里 还含有 一个父类的对象

liang ge
fskjb01 2010-04-20
  • 打赏
  • 举报
回复
可恶的面试题,扣这种东西有用么,我说有100个对象,好吧,很占内存吧,那就不要用 new了,全部用单例吧......
allvictory 2010-04-20
  • 打赏
  • 举报
回复
再加上两个类对象吧,三个
ZangXT 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 keeya0416 的回复:]
看样子我是把引用和对象的概念没区分好
我的理解是:
堆中的一个对象((superAttribute)subAttribute)
父类引用引用了其中一部分
子类引用引用了全部;含有同名属性的话,子类引用在不强转成父类的话无法显式引用父类的属性。
不知道是否正确
[/Quote]
能否引用啥属性主要是给编译器检查用的
keeya0416 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 keeya0416 的回复:]
其实子类的构造里第一行就是默认的父类的无参构造函数
个人觉得可以说是实例化了一个父类的对象
后边子类再封装了下
[/Quote]
这也就是说着子类构造里的父类构造并不是完全构造,只是把父类需要的空间给开了后再交给子类把子类的需要的空间给添加上后再打上mark字段。此时才是真正构造完一个可以称之为“对象”的对象;ZangXT大侠 是这个意思么
keeya0416 2010-04-15
  • 打赏
  • 举报
回复
看样子我是把引用和对象的概念没区分好
我的理解是:
堆中的一个对象((superAttribute)subAttribute)
父类引用引用了其中一部分
子类引用引用了全部;含有同名属性的话,子类引用在不强转成父类的话无法显式引用父类的属性。
不知道是否正确
jimyx123 2010-04-15
  • 打赏
  • 举报
回复
与实例化一个父类对象不一样,那样的话就无端端多出一个父类对象占用的空间了
子类的大小是包括了父类所有属性的,另外就算没有任何属性创建父类对象也要占空间的
keeya0416 2010-04-15
  • 打赏
  • 举报
回复
ZangXT 说的很好,看样子我过去的理解都要颠覆了。。。杯具了
『传说中的“父类对象”或许是指Base.i这个东西吧。我不知道没有了mark字段和Klass指针的几个成员是否有资格叫做“对象”』(ZangXT原话)。
keeya0416 2010-04-15
  • 打赏
  • 举报
回复
其实子类的构造里第一行就是默认的父类的无参构造函数
个人觉得可以说是实例化了一个父类的对象
后边子类再封装了下
jimyx123 2010-04-15
  • 打赏
  • 举报
回复
1个对象,方法区两个类实例
父类的字段会合并到子类去,包括子类不能访问的字段
ZangXT 2010-04-15
  • 打赏
  • 举报
回复
WYhack 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keeya0416 的回复:]

可以说是2个对象
也可以说是一个对象
一个对象就是 b
2个对象就是 b 里 还含有 一个父类的对象
[/Quote]

2个对象就是 b 里 还含有 一个父类的对象

那么,在内存中是怎么表示的?
WYhack 2010-04-15
  • 打赏
  • 举报
回复
期待有高手解释!
keeya0416 2010-04-15
  • 打赏
  • 举报
回复
可以说是2个对象
也可以说是一个对象
一个对象就是 b
2个对象就是 b 里 还含有 一个父类的对象

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧