作者bleed1979 (十三)
看板java
标题Re: [问题] private继承问题
时间Sun Jul 20 14:59:19 2014
※ 引述《kiwatami (悠游自在)》之铭言:
: 其实我的疑问很简单
: public Class Parent{
: private Foo foo;
: private Bar bar;
: public Foo getFoo(){
: return foo;
: }
: public Bar getBar(){
: return bar;
: }
: }
: public Class Child extends Parent{
: public void doSomething(){
: Foo foo = this.getFoo();
: }
: private void doAnother(){
: Bar bar = this.getBar();
: }
: }
: public Class Arrangement{
: public void init(){
: Child child = new Child();
: child.doSomething();
: }
: }
: 在doSomething中的getFoo();
: 是从哪里取得Foo这个物件的?
: 而Foo这个物件在这种情况下是存在於哪一个类别?
: 实作上的确会存在一个父类别的物件
: 而Foo及其getter也的确存在於父类别内而不是在子类别内
: 以下都是从定义上来阐述非实作上的真正行为
: 拿到继承这方面讲
: 定义上写着Child继承了Parent的getFoo()
: 但却没有继承Parent的Foo
: 所以定义上的流程应该是:
: call getFoo() from Child -> return foo from Parent
: or
: call getFoo() from Parent -> return foo from Parent
: 如果是前者 不是非常奇怪吗?
: 没有继承foo 要从哪里跟Parent拿foo?
如果你的实作是指runtime而非怎麽实作java这个语言的话,
以下跑Eclipse debugger给你
1.准备getFoo(),按下F5进入
http://bleed1979.myweb.hinet.net/pic1.PNG
2.控制权到Parent,鼠标放在return foo的foo,记住@64482923
http://bleed1979.myweb.hinet.net/pic2.PNG
3.鼠标放在private Foo foo = new Foo();的foo,同样是@64482923无误
http://bleed1979.myweb.hinet.net/pic3.PNG
4.按下F7回Child,鼠标放在Foo foo = this.getFoo();的foo,验证@64482923
http://bleed1979.myweb.hinet.net/pic4.PNG
stackoverflow上面有篇文
http://stackoverflow.com/questions/2486160/java-virtual-methods
default Java的methods是virtual的。
--
不用太管别人怎麽说,就学问讨论就行啦~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.203.156
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1405839564.A.0D3.html