Java Basic 2

key point

子類構(gòu)造函數(shù)

public class Father {
 
     public void draw() {
         System.out.println("father draw");
     }
     
     public Father() {
         System.out.println("father:before draw");
         draw();
         System.out.println("father:after draw");
     }
 
 }
public class Son extends Father {
 
     private int number = 1;
     
     public Son(int number) {
         this.number = number;
         System.out.println("init number:" + this.number);
     }
     
     @Override
     public void draw() {
         System.out.println("son draw number:" + this.number);
     }
 }
public class MainTest <T> extends Object{
    
    public static void main(String[] args) {
        new Son(5);
    }
}

輸出結(jié)果
father:before draw
son draw number:0
father:after draw
init number:5

子類構(gòu)造函數(shù)的第一行都是super(); 如果沒有super()的話 編譯器自動增加super.
基類的構(gòu)造函數(shù)調(diào)用draw. 因?yàn)関irtureinvoke 的關(guān)系 會調(diào)用子類的draw
子類的number 沒有被初始化完成. 只有默認(rèn)的0
完成基類的構(gòu)造, 回到子類
完成構(gòu)造

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容