继承中属性的相关问题

三寸_天堂 2016-08-03 01:15:24
为什么输出的都是小明?
...全文
228 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
三寸_天堂 2016-08-05
  • 打赏
  • 举报
回复
引用 11 楼 NewMoons 的回复:
楼主不适合编程,鉴定完毕。 呵呵,开玩笑了。 3楼加5楼已经很清楚的解释这个问题了。 我还是忍不住再啰嗦几句: 问题的核心在于你的son没有定义name,那father的name自然就是son的name了(儿子继承了这个name和父亲共用)。无论改的是son的name还是father的name,在内存里都是一个name。 如果还不明白,你就在son里也定义一个相同的name,再执行下程序看看,相信你就明白了。
我知道这个 是我想多了
NewMoons 2016-08-03
  • 打赏
  • 举报
回复
楼主不适合编程,鉴定完毕。 呵呵,开玩笑了。 3楼加5楼已经很清楚的解释这个问题了。 我还是忍不住再啰嗦几句: 问题的核心在于你的son没有定义name,那father的name自然就是son的name了(儿子继承了这个name和父亲共用)。无论改的是son的name还是father的name,在内存里都是一个name。 如果还不明白,你就在son里也定义一个相同的name,再执行下程序看看,相信你就明白了。
三寸_天堂 2016-08-03
  • 打赏
  • 举报
回复
还是没怎么理解是我想多了么
angel鹿 2016-08-03
  • 打赏
  • 举报
回复
引用 5 楼 soton_dolphin 的回复:
举个例子,你爸爸账户里有100块,你继承了这个账户,从里面提出来10块。所以不论是你爸爸查账还是你查账,里面都是90
soton_dolphin 2016-08-03
  • 打赏
  • 举报
回复
引用 7 楼 l576397042 的回复:
[quote=引用 6 楼 qnmdcsdn 的回复:] [quote=引用 3 楼 Left_you 的回复:] 你的 Son 类没有定义name属性的时候,this.name 和 supper.name 其实都指向了 supper.name。 你在 Son 类定义 name 属性,两者才会代表不同的东西。
引用 5 楼 soton_dolphin 的回复:
举个例子,你爸爸账户里有100块,你继承了这个账户,从里面提出来10块。所以不论是你爸爸查账还是你查账,里面都是90
[/quote] 那是说父类和子类的属性继承是共用的?给子类中继承的属性赋值之后就会覆盖父类中的属性值么[/quote] 其实是子类可以直接使用父类里面的实例变量,如果父类的变量声明为protected, public。所以父类的实例变量最好是声明为私有。
三寸_天堂 2016-08-03
  • 打赏
  • 举报
回复
引用 6 楼 qnmdcsdn 的回复:
[quote=引用 3 楼 Left_you 的回复:] 你的 Son 类没有定义name属性的时候,this.name 和 supper.name 其实都指向了 supper.name。 你在 Son 类定义 name 属性,两者才会代表不同的东西。
引用 5 楼 soton_dolphin 的回复:
举个例子,你爸爸账户里有100块,你继承了这个账户,从里面提出来10块。所以不论是你爸爸查账还是你查账,里面都是90
[/quote] 那是说父类和子类的属性继承是共用的?给子类中继承的属性赋值之后就会覆盖父类中的属性值么
  • 打赏
  • 举报
回复
引用 3 楼 Left_you 的回复:
你的 Son 类没有定义name属性的时候,this.name 和 supper.name 其实都指向了 supper.name。 你在 Son 类定义 name 属性,两者才会代表不同的东西。
引用 5 楼 soton_dolphin 的回复:
举个例子,你爸爸账户里有100块,你继承了这个账户,从里面提出来10块。所以不论是你爸爸查账还是你查账,里面都是90
soton_dolphin 2016-08-03
  • 打赏
  • 举报
回复
举个例子,你爸爸账户里有100块,你继承了这个账户,从里面提出来10块。所以不论是你爸爸查账还是你查账,里面都是90
soton_dolphin 2016-08-03
  • 打赏
  • 举报
回复
因为子类继承了父类,所以子类的name和父类的name引用的都是同一个string 对象,当在子类里修改了name的值,也就相当于修改了父类的name。
Left_you 2016-08-03
  • 打赏
  • 举报
回复
你的 Son 类没有定义name属性的时候,this.name 和 supper.name 其实都指向了 supper.name。 你在 Son 类定义 name 属性,两者才会代表不同的东西。
三寸_天堂 2016-08-03
  • 打赏
  • 举报
回复

我再建一个子类,输出的name值还是为初始值
阳光越来越暖 2016-08-03
  • 打赏
  • 举报
回复
这个问题问的阔以

62,620

社区成员

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

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