Java 非静态初始化的例子

网友投稿 299 2022-11-22


Java 非静态初始化的例子

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

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(http://"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 非静态初始化的例子的详细内http://容,更多关于Java 非静态初始化的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 二分查找算法的实现
下一篇:Java String字符串内容实现添加双引号
相关文章

 发表评论

暂时没有评论,来抢沙发吧~