作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 父变数指到子物件的继承问题
时间Sat Apr 27 21:20:41 2013
※ 引述《Shrugg (泪眼问花花不语)》之铭言:
: 对不起,又碰到观念性问题想不通了,所以藉休息思考时间又来这边寻找温情.嘻
=="
我真的觉得你对 Java 版的误会很深
其实这个也算是经典 FAQ 了
但是,我也不知道该给你什麽关键字爬文 [炸]
: 请问当程式跑到 Father f = new Son()後,从记忆体来看
: 不是就一个Stack区的变数f指向Heap区的一个Son物件吗?
: 如果这时候执行f.show() 为什麽IntelliSense只能选择父类别里的show()?
^^^^^^^^^^^^
敢问这是啥东西(对不起,我应该先 google [逃])
: 但是如果父类跟子类同时有定义show(),即使选用的是父类的show()
: 却是显示子类show()的内容呢?
: 从物件来看,父类跟子类会有不同的方法跟成员变数,可以理解是不同的东西
: 但是变数的目的不是存值就是存参照,变数为什麽会有父跟子的区分呢?
: 谢谢.
我觉得 andymai 跟 coolcomm 回的都很好
但是好到我这种智商有点看不懂 [泪目]
所以我也用我的方法诠释一下...
反正这种合理的灌水方式应该不会有人反对 \囧/
请想像一下期中考的场景(大学应该刚考完吧?)
同学们来自四面八方
虽然唐僧有说过「妖是妖他妈生的,人是人他妈生的」
但是对於教授来说,管你是谁生的,对他来讲就是学生
而学生就要能考期中考 (谜之声:WTF)
//在班级组成的时候
学生[] 班级成员 = new 学生[3];
班级成员[0] = new 人();
班级成员[1] = new 妖();
班级成员[2] = new 人妖();
//考试的时候管你是人还是妖,反正每个人都给我交卷
ArrayList<考卷> 期中考考卷 = new ArrayList<考卷>;
for(学生 foo : 班级成员) {
期中考考卷.add(foo.交卷(期中考题目));
}
但是如果全班不管是人、妖、还是人妖
交出来的考卷都一模一样,摆明了就是作弊,这不科学
应该每个人有自己写考卷的方法
当然,也可以设计 `学生` 这个 class 本来就有 `交卷()` 这个 method
我大概会设计成
public 考卷 交卷(考卷 题目) {
return 题目; //就是交白卷啦 \囧/
}
这样如果同学不上进,不实作自己的 `交卷()` method
系统也不会 crash...
至於人、妖、人妖、学生(以及其他可能的 class)
叠出来的 class 大楼会不会有多重继承之类 blahblah 的困扰......
下课! 下课!
--
钱锺书:
说出来的话
http://www.psmonkey.org
比不上不说出来的话
Java 版 cookcomic 版
只影射着说不出来的话
and more......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.162.248.51