Re: [問題] 繼承會自動叫父類的建構式
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):