看板 java 關於我們 聯絡資訊
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
LaPass:前面有人問過怎麼在外部叫用super方法,結果是不行。 09/30 21:49
LaPass:那時候就覺得...Java的override差不多是把舊的方法取代掉了 09/30 21:51
aoksc:我問的不是super的問題耶= = 09/30 21:52
LaPass:是override的問題.... 09/30 21:55
應該是跟多型無關 剛試著把obj=new BB(); 改成BB XX=new BB(); 結果還是一樣 應該說即便是在父類別的的建構子呼叫方法 子父類別有同名方法的話 會自動override父類別的方法 這樣敘述不知道正不正確? ※ 編輯: aoksc 來自: 124.8.138.239 (09/30 22:08)
LaPass:先不管是不是在建構子內.... 只要你叫有override的Mothod, 09/30 22:34
LaPass:沒用super.XXX()去叫,就是叫用最底層的Method。 09/30 22:36
lachtchlee:說法正確 動態綁定 在 constructor()中調用其它方法宜 09/30 22:52
lachtchlee:慎 語法正確 但有時卻會造成事實上的不合理 09/30 22:55
lachtchlee:原po敘述正確 09/30 22:57
lachtchlee:本來想叫爸爸不要打牌 卻變成兒子不要打電動 09/30 23:02
lachtchlee:會自動調用子類中覆蓋掉父類的同名的方法 09/30 23:30
lovdkkkk:看怎麼想 如果意思是是叫人專心吃飯 父子兩個不同很合理 10/01 01:38
lovdkkkk:然後如果是 static 的方法結果可能不同 10/01 01:39