求高人指点迷津 啊

QQ331983361 2012-06-12 01:54:01
public class Base {
int x;
Base()
{
x=5;
}
public void show()
{
System.out.println(x);
}

}




public class Sub extends Base {
Sub()
{
x=9;
}

}



public class Test {
public static void main(String[] args) {
Sub sub =new Sub();
Base base =new Base();
base.show();
sub.show();
为什么不是5,5啊

...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlu_lamp_lamp 2012-06-12
  • 打赏
  • 举报
回复
他们又不是共用内存,当然不一样了,而且又不是覆盖
FFF9527 2012-06-12
  • 打赏
  • 举报
回复
new的意思就是单独开辟一个内存,用于存放对象。
因为你的两个new分别声明了两个对象,占用两个完全不同的内存。

base对象占用一个空间。
sub占用一个空间。(sub中包含一个base,却与上面的base在不同的内存地址中)
QQ331983361 2012-06-12
  • 打赏
  • 举报
回复
如果再输出一个base.show()为什么不是9啊,不是说父类(base)中的x已经改变,不知道您懂我哪里没明白不[Quote=引用 1 楼 的回复:]
刚刚说了,
Base base =new Base();
base中有一个地方开辟了内存,仅为base
x为原始值,x=5

Sub sub =new Sub();
sub的内应有两地方开辟了内存,一个为base(父类),一个为sub(父类的扩展)
中,你将x设为了9,那么父类(base)中的x已经改变,sub.show()输出为9。
[/Quote]
FFF9527 2012-06-12
  • 打赏
  • 举报
回复
刚刚说了,
Base base =new Base();
base中有一个地方开辟了内存,仅为base
x为原始值,x=5

Sub sub =new Sub();
sub的内应有两地方开辟了内存,一个为base(父类),一个为sub(父类的扩展)
中,你将x设为了9,那么父类(base)中的x已经改变,sub.show()输出为9。

62,614

社区成员

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

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