package myPackage;
public class ClassA extends ClassB{
static {
System.out.println("A");
}
public ClassA(){
System.out.println("B");
}
public static void main(String[] args) {
new ClassA(); //结果是CADB
//new ClassB(); 如果是ClassB继承了ClassA, 那么结果是ACBD
//上述两个测试说明了执行顺序是: 父类static块 -> static块 -> 父类构造函数 -> 子类构造函数
}
}
class ClassB{
static {
System.out.println("C");
}
public ClassB(){
System.out.println("D");
}
public void ClassB(){ //不推荐方法名与类名相同
System.out.println("E");
}
}Java new一个子类对象时static和构造函数的执行顺序
最新推荐文章于 2023-05-20 14:56:24 发布
本文通过一个Java示例程序详细解释了在Java中父类与子类构造函数及静态初始化块的执行顺序。演示了如何通过打印输出来跟踪执行流程,并提供了具体的输出结果以帮助理解。
42

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



