public class FatherClass {
{
System.out.println("父类普通代码块1");
}
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类普通代码块2");
}
public FatherClass() {
System.out.println("父类构造方法");
}
}
public class SonClass extends FatherClass {
{
System.out.println("子类普通代码块1");
}
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类普通代码块2");
}
public SonClass() {
System.out.println("子类构造方法");
}
public static void main(String[] args) {
System.out.println("main方法");
new SonClass();
System.out.println("------华丽丽的分割线------");
new SonClass();
System.out.println("------华丽丽的分割线------");
new SonClass();
}
}
执行结果:
父类静态代码块
子类静态代码块
main方法
父类普通代码块1
父类普通代码块2
父类构造方法
子类普通代码块1
子类普通代码块2
子类构造方法
——华丽丽的分割线——
父类普通代码块1
父类普通代码块2
父类构造方法
子类普通代码块1
子类普通代码块2
子类构造方法
——华丽丽的分割线——
父类普通代码块1
父类普通代码块2
父类构造方法
子类普通代码块1
子类普通代码块2
子类构造方法
总结:
- 静态代码块只执行一次
- 普通代码块在每次创建对象时都会执行
- 多个普通代码块的执行顺序由它们在代码中出现的顺序决定(先出现先执行)
- 子类在创建对象的时候会默认先创建出一个父类对象
- 执行顺序:静态代码块 > mian方法 > 普通代码块 > 构造方法
本文详细解析了Java中父类和子类构造方法及代码块的执行顺序,并通过具体示例展示了静态代码块、普通代码块及构造方法的运行机制。
的区别&spm=1001.2101.3001.5002&articleId=54617373&d=1&t=3&u=9e5860825cf049b99a892efa511bfb74)
939

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



