public class AAA {
public static void main(String[] args) {
C name = new C(); //新建一个子类的时候总会先 调用父类的 构造方法 代码块
System.out.println();
C name1 = new C("1"); //新建一个子类的时候总会先 调用父类的 构造方法 代码块
}
}
class A{
static {
System.out.println("A静态代码块");
}
{
System.out.println("A代码块");
}
public A() {
// TODO 自动生成的构造函数存根
System.out.println("A构造");
}
}
class B extends A{
static{
System.out.println( "-static 代码块"); // 无论新建几个子类对象 static 只执行一次
}
{
System.out.println("--代码块"); // 子类每次创建对象 就会执行父类的代码内容
}
public B() {
// TODO 自动生成的构造函数存根
System.out.println("---B无参构造");
}
public B(String string) {
System.out.println("----B有参构造");
// TODO 自动生成的构造函数存根
}
}
class C extends B{
public C() {
// TODO 自动生成的构造函数存根
//默认调用父类的 代码块、无参构造
System.out.println("---C无参构造");
}
public C(String string) {
super("b"); //调用父类的有参构造
System.out.println("----C有参构造");
// TODO 自动生成的构造函数存根
}
}