Java代码
public class Test1
{
public static void main(String[] args)
{
Test2 t2 = new Test2();
System.out.println();
Test3 t3 = new Test3();
}
}
class Test2
{
static
{
System.out.println("Test2 static");
}
public Test2()
{
System.out.println("Test2 create");
}
}
class Test3 extends Test2
{
static
{
System.out.println("Test3 static");
}
public Test3()
{
System.out.println("Test3 create");
}
}
public class Test1
{
public static void main(String[] args)
{
Test2 t2 = new Test2();
System.out.println();
Test3 t3 = new Test3();
}
}
class Test2
{
static
{
System.out.println("Test2 static");
}
public Test2()
{
System.out.println("Test2 create");
}
}
class Test3 extends Test2
{
static
{
System.out.println("Test3 static");
}
public Test3()
{
System.out.println("Test3 create");
}
}
输出为:
Java代码
Test2 static
Test2 create
Test3 static
Test2 create
Test3 create
Test2 static
Test2 create
Test3 static
Test2 create
Test3 create
如果把Test2 t2 = new Test2();注释掉,这时输出为:
Java代码
Test2 static
Test3 static
Test2 create
Test3 create
public class Test1
{
public static void main(String[] args)
{
Test2 t2 = new Test2();
System.out.println();
Test3 t3 = new Test3();
}
}
class Test2
{
static
{
System.out.println("Test2 static");
}
public Test2()
{
System.out.println("Test2 create");
}
}
class Test3 extends Test2
{
static
{
System.out.println("Test3 static");
}
public Test3()
{
System.out.println("Test3 create");
}
}
public class Test1
{
public static void main(String[] args)
{
Test2 t2 = new Test2();
System.out.println();
Test3 t3 = new Test3();
}
}
class Test2
{
static
{
System.out.println("Test2 static");
}
public Test2()
{
System.out.println("Test2 create");
}
}
class Test3 extends Test2
{
static
{
System.out.println("Test3 static");
}
public Test3()
{
System.out.println("Test3 create");
}
}
输出为:
Java代码
Test2 static
Test2 create
Test3 static
Test2 create
Test3 create
Test2 static
Test2 create
Test3 static
Test2 create
Test3 create
如果把Test2 t2 = new Test2();注释掉,这时输出为:
Java代码
Test2 static
Test3 static
Test2 create
Test3 create
本文通过具体的Java代码示例,展示了类的构造过程及静态初始化块的执行时机,同时探讨了子类如何继承父类并执行自己的构造方法。特别关注了在创建对象时静态成员与非静态成员的初始化顺序。

被折叠的 条评论
为什么被折叠?



