Re: [問題] 繼承會自動叫父類的建構式

看板java作者 (骨頭)時間18年前 (2007/06/02 03:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《edge2000 (好累)》之銘言: : 另一個程式如下: : class Son extends Father{ : Son(){ : ★ : this('A'); : System.out.println("B"); 試著把上面兩行對調看看如何? :P : } : Son(char c){ : super(c); : } : } : 那為什麼結果不會是在上面★這個地方因為要自動呼叫父類建構子super(); : 而產生編譯錯誤呢? : 非常感謝回答的高手, : 因為我觀念好像都學的不太清楚。 把握一個原則 建構子裡面要呼叫建構子一定要寫在第一行, 不管是呼叫this或super都是。 如果沒有呼叫就會自動補super() , 相對的有呼叫就不會補super(). 你所需要知道的就只有這樣而已 ★ → this('A') → super('A') ──────────────────────────────── 舉另一個情境 class Father { Father(){ System.out.println("Father"); } } class Son extends Father{ Son(){ this('A'); System.out.println("B"); } Son(char c){ System.out.println("C"); } } 此時new Son => son() → this('A') → super() /* 因為 Son(char) 第一行沒有建構子 */ -- 這是個原則問題 , 目的是要確保父類別有被正確初始化. --  ▄▅▆▇███▇▆▅▄▃        ╰┼╯─╮ ╮         ◥███████████◣       ╰┼╯=│=│         ◥██████───────    *. ╯  ╯ ╯ の 物 語 .*  ◥███████──────◣ ~ ◢◣             ◢◣  ◥██████───────◤   ◥◤  空白的世界.翼 ◥◤  ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂telnet://tony1223.no-ip.info -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.27.68
文章代碼(AID): #16O7Izf6 (java)
文章代碼(AID): #16O7Izf6 (java)