Re: [問題] 建構子和this super的問題

看板java作者時間18年前 (2007/07/20 17:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《ace113.bbs@ptt.cc (艾德華)》之銘言: > 新手發問,請指教@@ > 想請問一下在繼承時的建構子裡面,如果子類別的建構子中有 > 出現this或是super是不是執行的順序會先是super(或this) ===>一個建構子的第一行,一定是this或是super(如果user沒設,預設是super(); ),所以一定會先執行this 或是super > 然後才是父類別的建構子? ====>會不會呼叫到父類別的建構子,要看你是寫了this還是super > 也就是說順序是->子類別建構子->先執行父類別建構子(當有this時先執行) > ->然後才是子類別建構子內容 ===>當你寫了this時,是指呼叫這個子類別的另一個建構元(看是否有傳參數) ,super()才是呼叫父類別的建構子 > 例如 > class A{ > A(){ > .... > } > } //不管是否帶參數的建構子 > class B extends A{ > B(){ > this('a'); //先執行這行,才執行建構子A()? > } > } > public class Extends1{ > public static void man(String[] args){ > B b=new B(); > } > } > 不知道看不看的懂我的問題.感謝ORZ ===>以上的程式,是會編譯錯誤的,當你呼叫了B(),執行到 this('a'),是指呼叫 B類別裡的另一個建構子,而它的參數是字元,如果你在B類別裡加上 B(char x){super();},編譯才會成功 -- ┌─────KKCITY─────┐ KKBOX歌名歌手歌詞專輯搜尋 bbs.kkcity.com.tw http://www.kkbox.com.tw └──From:220.138.37.189 ──┘ 超過100家唱片公司合法授權 音樂盡情下載 --
文章代碼(AID): #16e84Q00 (java)
文章代碼(AID): #16e84Q00 (java)