類的初始化和總結


class A { 
    static A a=new A('s',1);
    A(char c, int i) { System.out.println("A(char, int)"+"c"+c+"i"+i);} 
}函數

public class Ex8 extends A { 
    private char c;
    private static  int i;
    static{
        System.out.println("ssssssssssssss"+"i"+i);
    }
    static A v=new A('v',2);
    A z;  spa

 {
        System.out.println("ssssssssssssss"+"c"+c+"i"+i);
    }
    Ex8() { 
        super('z', 3);對象

z=new A ('w',1);
        System.out.println("Ex8()"); 
    } 
    Ex8(char a, int j) {     
        super(a, j); 
        c = a;
        i = j;
        System.out.println("Ex8(char,int)");
        System.out.println("zzzzz"+"c"+c+"i"+i);
    }
    public static void main(String[] args) {
        Ex8 ex1 = new Ex8();
        Ex8 ex2 = new Ex8('b', 2); 
    }
}class

類的初始化第一步執行的是main方法,這時候有用main的類的加載了,先去找有沒有extends,若是有先執行父類的靜態的變量的初始化,再執行子類的靜態變量的初始化,若是有靜態代碼塊,也會一併執行 ,而後纔是執行new出來的對象,先去找父類的構造函數進行初始化,因爲初始化構造函數的時候必須先執行成員變量的初始化,因此先執行,而後是子類的變量

因此輸出結果是構造函數

A(char, int)csi1
ssssssssssssssi0
A(char, int)cvi2
A(char, int)czi3方法

A(char, int)cwi1
Ex8()
A(char, int)cbi2
ssssssssssssssc i0static

Ex8(char,int)
zzzzzcbi2vi

相關文章
相關標籤/搜索