类的初始化和总结


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

相关文章
相关标签/搜索