您的位置:首页 > 其它

指出下面程序的运行结果

2016-12-05 21:09 176 查看
class A {
static {
System.out.print("父类静态成员 ");
}
//初始化块,也即是非static语句块
{
System.out.print("父类非静态成员 ");
}

public A() {
System.out.print("父类构造方法 ");
}
}

class B extends A {
static {
System.out.print("子类静态成员 ");
}
{
System.out.print("子类非静态成员 ");
}

public B() {
System.out.print("子类构造方法 ");
}
}

public class Test {

public static void main(String[] args) {
A ab = new B();
System.out.println("\n---------------------------------");
ab = new B();
}
}
运行结果



结果说明

创建对象时调用顺序如下:

①先初始化父类和子类的静态成员。

②父类非静态成员。

③父类构造方法。

④子类非静态成员。

⑤子类构造方法。

另外需要注意的是,加static的语句块在加载类时就加载初始化了;不加static的语句块即初始化块,是在创建类的对象的时候才加载,在调用构造方法之前要先调用初始化块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: