指出下面程序的运行结果

2022-06-21 00:00:00 程序 运行 指出

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的语句块即初始化块,是在创建类的对象的时候才加载,在调用构造方法之前要先调用初始化块。

    原文作者:csulfy
    原文地址: https://blog.csdn.net/csulfy/article/details/53470043
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章