package demo;
public class Test3 {
public static void main(String[] args) {
new B().run();
}
}
class A{
static{
System.out.println("A static ;");
}
{
System.out.println("A defalult ;");
}
A(){
System.out.println("A Class");
}
void run(){
System.out.println("A run");
}
}
class B extends A{
static{
System.out.println("B static ;");
}
{
System.out.println("B defalult ;");
}
B(){
System.out.println("B Class");
}
void run(){
System.out.println("B run");
}
}
运行结果:
A static ;
B static ;
A defalult ;
A Class
B defalult ;
B Class
B run
总结 : 生命子类对象时 总是先去加载父类的静态代码块,然后加载子类的静态代码块(静态代码永远是最先加载的),然后会加载父类中的默认代码块 和父类构造方法,然后是子类.
优先级: 静态代码块>代码块>构造方法 父类优先于子类
注意: 新建子类对象时 必须会加载父类构造器!
本文详细解析了Java中子类对象创建时的构造过程,包括静态代码块、默认代码块及构造方法的执行顺序,并通过具体示例代码展示了父类与子类构造方法的调用流程。
41

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



