笔试&&面试经验

JAVA的继承问题

2016-10-22  本文已影响30人  shanyukang

publicclassHelloBextendsHelloA

{

publicHelloB()

{

}

{

System.out.println("I’m B class");

}

static

{

System.out.println("static B");

}

publicstaticvoidmain(String[] args)

{

newHelloB();

}

}

classHelloA

{

publicHelloA()

{

}

{

System.out.println("I’m A class");

}

static

{

System.out.println("static A");

}

}

其中涉及:静态初始化代码块、构造代码块、构造方法

当涉及到继承时,按照如下顺序执行:

1、执行父类的静态代码块

static {

System.out.println("static A");

}

输出:static A

2、执行子类的静态代码块

static {

System.out.println("static B");

}

输出:static B

3、执行父类的构造代码块

{

System.out.println("I’m A class");

}

输出:I'm A class

4、执行父类的构造函数

public HelloA() {

}

输出:无

5、执行子类的构造代码块

{

System.out.println("I’m B class");

}

输出:I'm B class

6、执行子类的构造函数

public HelloB() {

}

输出:无

那么,最后的输出为:

static A

static B

I'm A class

I'm B cla

上一篇下一篇

猜你喜欢

热点阅读