- 构造器的最前面其实隐含了super()和调用普通代码块。而静态相关的代码块和属性,在类加载时,就执行完毕,因此是优先于构造器和普通代码块执行的。 ```java package test;
public class Main { public static void main(String[] args) { //(1)AAA的普通代码块 // (2)AAA() 构造器被调用 // (3)BBB的普通代码块 // (4)BBB() 构造器被调用 new BBB(); } }
class AAA { //父类Object { System.out.println(“AAA的普通代码块”); } public AAA() { //隐含执行 //(1)super() //(2)调用本类的普通代码块 System.out.println(“AAA() 构造器被调用….”); } }
class BBB extends AAA { { System.out.println(“BBB的普通代码块…”); } public BBB() { //隐含执行 //(1)super() //(2)调用本类的普通代码块 System.out.println(“BBB() 构造器被调用….”); } } ```