Re: [問題] 建構子和this super的問題
※ 引述《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家唱片公司合法授權 音樂盡情下載
--
討論串 (同標題文章)