[問題] 請問建構時期呼叫方法的問題

看板java作者 (重出江湖)時間14年前 (2011/09/30 21:38), 編輯推噓6(607)
留言13則, 4人參與, 最新討論串1/1
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

09/30 21:49, , 1F
前面有人問過怎麼在外部叫用super方法,結果是不行。
09/30 21:49, 1F

09/30 21:51, , 2F
那時候就覺得...Java的override差不多是把舊的方法取代掉了
09/30 21:51, 2F

09/30 21:52, , 3F
我問的不是super的問題耶= =
09/30 21:52, 3F

09/30 21:55, , 4F
是override的問題....
09/30 21:55, 4F
應該是跟多型無關 剛試著把obj=new BB(); 改成BB XX=new BB(); 結果還是一樣 應該說即便是在父類別的的建構子呼叫方法 子父類別有同名方法的話 會自動override父類別的方法 這樣敘述不知道正不正確? ※ 編輯: aoksc 來自: 124.8.138.239 (09/30 22:08)

09/30 22:34, , 5F
先不管是不是在建構子內.... 只要你叫有override的Mothod,
09/30 22:34, 5F

09/30 22:36, , 6F
沒用super.XXX()去叫,就是叫用最底層的Method。
09/30 22:36, 6F

09/30 22:52, , 7F
說法正確 動態綁定 在 constructor()中調用其它方法宜
09/30 22:52, 7F

09/30 22:55, , 8F
慎 語法正確 但有時卻會造成事實上的不合理
09/30 22:55, 8F

09/30 22:57, , 9F
原po敘述正確
09/30 22:57, 9F

09/30 23:02, , 10F
本來想叫爸爸不要打牌 卻變成兒子不要打電動
09/30 23:02, 10F

09/30 23:30, , 11F
會自動調用子類中覆蓋掉父類的同名的方法
09/30 23:30, 11F

10/01 01:38, , 12F
看怎麼想 如果意思是是叫人專心吃飯 父子兩個不同很合理
10/01 01:38, 12F

10/01 01:39, , 13F
然後如果是 static 的方法結果可能不同
10/01 01:39, 13F
文章代碼(AID): #1EXSPgM1 (java)