Java 非静态初始化的例子

时间:2021-05-20

在继承关系中,静态初始化、非静态初始化和构造函数的执行顺序

public class ExA { static { System.out.println("父类--静态代码块"); } public ExA() { System.out.println("父类--构造函数"); } { //非静态代码块 System.out.println("父类--非静态代码块"); } public static void main(String[] args) { new ExB(); }} class ExB extends ExA { static { System.out.println("子类--静态代码块"); } { //非静态代码块 System.out.println("子类--非静态代码块"); } public ExB() { System.out.println("子类--构造函数"); }}

执行结果:

父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数

从上边的例子我们可以得出非静态代码块的初始化顺序是在静态代码块的初始化之后。
下边我们再来看另一个例子:

class Mug{ public Mug(int marker) { System.out.println("Mug("+marker+")"); } void f(int marker){ System.out.println("f("+marker+")"); }}public class Mugs { Mug mug1; Mug mug2; { //非静态代码块 mug1 = new Mug(1); mug2 = new Mug(2); System.out.println("mug1 & mug2 initialized"); } Mugs(){ System.out.println("Mugs()"); } Mugs(int i){ System.out.println("Mugs(int i)"); } public static void main(String[] args) { System.out.println("Inside main()"); //首先执行Mugs类中非静态代码块,创建两个对象。然后执行无参构造函数 new Mugs(); System.out.println("new Mugs() completed"); //再执行Mugs类中非静态代码块,这也是和静态代码块只初始化一次的不同之后,其次调用有参构造函数 new Mugs(1); System.out.println("new Mugs(1) completed"); } }

以上就是Java 非静态初始化的例子的详细内容,更多关于Java 非静态初始化的资料请关注其它相关文章!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章