直接上代码:
public class Sup {
static {
System.out.println("---父类静态代码块(在父类的无参构造上面)---");
}
{System.out.println("---父类动态代码块(在父类的无参构造上面)---");}
public Sup() {
System.out.println("---父类无参构造---");
}
{System.out.println("---父类动态代码块(在父类的无参构造下面)---");}
static {
System.out.println("---父类静态代码块(在父类的无参构造下面)---");
}
}
package com.test.resources;
public class Sub extends Sup{
static {
System.out.println("---子类静态代码块(在子类的无参构造上面)---");
}
{System.out.println("---子类动态代码块(在子类的无参构造上面)---");}
public Sub() {
System.out.println("---子类无参构造---");
}
{System.out.println("---子类动态代码块(在子类的无参构造下面)---");}
static {
System.out.println("---子类静态代码块(在父类的无参构造下面)---");
}
}
public class Test {
public static void main(String[] args) {
new Sub();
}
}
---父类静态代码块(在父类的无参构造上面)---
---父类静态代码块(在父类的无参构造下面)---
---子类静态代码块(在子类的无参构造上面)---
---子类静态代码块(在父类的无参构造下面)---
---父类动态代码块(在父类的无参构造上面)---
---父类动态代码块(在父类的无参构造下面)---
---父类无参构造---
---子类动态代码块(在子类的无参构造上面)---
---子类动态代码块(在子类的无参构造下面)---
---子类无参构造---
public static void main(String[] args) {
new Sub();
System.out.println("创建第二个对象,模拟程序中已创建过对象");
new Sub();
}
---父类静态代码块(在父类的无参构造上面)---
---父类静态代码块(在父类的无参构造下面)---
---子类静态代码块(在子类的无参构造上面)---
---子类静态代码块(在父类的无参构造下面)---
---父类动态代码块(在父类的无参构造上面)---
---父类动态代码块(在父类的无参构造下面)---
---父类无参构造---
---子类动态代码块(在子类的无参构造上面)---
---子类动态代码块(在子类的无参构造下面)---
---子类无参构造---
创建第二个对象,模拟程序中已创建过对象
---父类动态代码块(在父类的无参构造上面)---
---父类动态代码块(在父类的无参构造下面)---
---父类无参构造---
---子类动态代码块(在子类的无参构造上面)---
---子类动态代码块(在子类的无参构造下面)---
---子类无参构造---