Java中非静态初始化块的应用实例是怎样的?

更新于
2026-10-11 13:01:13
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计521个文字,预计阅读时间需要3分钟。

Java中非静态初始化块的应用实例是怎样的?

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

javapublic class ExA { static { System.out.println(父类--静态代码块); } public ExA() { System.out.println(父类--构造函数); } { // 非静态初始化块 System.out.println(父类--非静态代码块); }}

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

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("子类--构造函数"); } }

执行结果:

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

Java中非静态初始化块的应用实例是怎样的?

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

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 非静态初始化的资料请关注易盾网络其它相关文章!

本文共计521个文字,预计阅读时间需要3分钟。

Java中非静态初始化块的应用实例是怎样的?

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

javapublic class ExA { static { System.out.println(父类--静态代码块); } public ExA() { System.out.println(父类--构造函数); } { // 非静态初始化块 System.out.println(父类--非静态代码块); }}

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

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("子类--构造函数"); } }

执行结果:

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

Java中非静态初始化块的应用实例是怎样的?

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

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 非静态初始化的资料请关注易盾网络其它相关文章!