Java初始化執行順序

1.首先執行構造語句中的super()方法

2.其次執行實例初始化語句

3.執行初始化語句裏面其他的語句

儘量減少在初始話語句中調用虛方法

請看以下實例:


public class Main{
    public static void main(String []args) {
        Circle circle = new Circle("circle", 1,100);

    }


}

class Shape {
    //第二步 初始化
    String name = "未命名";
    int bian = 0;

    public Shape(String name,int bian) {
        //第一步super()

        //第三步其他語句
        this.name = name;
        this.bian = bian;

        //注意因爲子類中重寫了此方法,所以會在super()中調用子類方法,但是此時子類temp還沒有初始化,所以temp
        //還會是0,不是100
        sayinfo();
    }

    public void sayinfo(){
        System.out.println("name:"+name+"bian:"+bian);
    }
}


class Circle extends Shape {
    //step 2
    int temp = -1;
    public Circle(String name, int bian,int temp) {
        //step 1
        super(name, bian);
        //step 3
        this.temp = temp;
        // 第二次執行sayinfo(),此時temp已經賦值
        sayinfo();
    }

    public void sayinfo(){
        System.out.println("子類"+name+bian+temp);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章