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