作者aoksc (重出江湖)
看板java
标题[问题] 请问建构时期呼叫方法的问题
时间Fri Sep 30 21:38:48 2011
http://pastie.org/2616984
程式码如上
请问一下
当我执行new B()的时候当我执行AA父类别建构子中fun1()方法的时候
本来我预期是会出现 A::fun1()==> a=10000
结果出现的是
B::fun1()==> a=0
B::fun1()==> b=0
B::fun1()==> c=20
请问以结果来说的话
我可以说是因为多型的关系
所以我虽然是在执行父类别的建构子
但其呼叫的同名方法还是会呼叫到子类别的fun1()方法
请问这样叙述正确吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.138.239
1F:推 LaPass:前面有人问过怎麽在外部叫用super方法,结果是不行。 09/30 21:49
2F:→ LaPass:那时候就觉得...Java的override差不多是把旧的方法取代掉了 09/30 21:51
3F:→ aoksc:我问的不是super的问题耶= = 09/30 21:52
4F:推 LaPass:是override的问题.... 09/30 21:55
应该是跟多型无关
刚试着把obj=new BB();
改成BB XX=new BB();
结果还是一样
应该说即便是在父类别的的建构子呼叫方法
子父类别有同名方法的话
会自动override父类别的方法
这样叙述不知道正不正确?
※ 编辑: aoksc 来自: 124.8.138.239 (09/30 22:08)
5F:推 LaPass:先不管是不是在建构子内.... 只要你叫有override的Mothod, 09/30 22:34
6F:→ LaPass:没用super.XXX()去叫,就是叫用最底层的Method。 09/30 22:36
7F:推 lachtchlee:说法正确 动态绑定 在 constructor()中调用其它方法宜 09/30 22:52
8F:→ lachtchlee:慎 语法正确 但有时却会造成事实上的不合理 09/30 22:55
9F:→ lachtchlee:原po叙述正确 09/30 22:57
10F:→ lachtchlee:本来想叫爸爸不要打牌 却变成儿子不要打电动 09/30 23:02
11F:推 lachtchlee:会自动调用子类中覆盖掉父类的同名的方法 09/30 23:30
12F:推 lovdkkkk:看怎麽想 如果意思是是叫人专心吃饭 父子两个不同很合理 10/01 01:38
13F:→ lovdkkkk:然後如果是 static 的方法结果可能不同 10/01 01:39