直接上代码
父类
public class Parent {
// 静态属性
private static String staticField = getStaticField();
// 静态代码块
static {
System.out.println("父类静态代码块初始化");
}
// 普通属性
private String field = getField("父类普通属性初始化");
// 普通代码块
{
System.out.println("父类普通代码块初始化");
}
// 构造方法
public Parent() {
System.out.println("父类构造方法初始化");
}
// 静态方法
public static String getStaticField() {
System.out.println("父类静态属性初始化");
String statiFiled = "父类静态属性初始化";
return statiFiled;
}
// 普通方法
public String getField(String str) {
System.out.println("父类普通方法--->"+str);
String filed = "父类普通方法--->"+str;
return filed;
}
}
子类
public class Child extends Parent{
// 静态属性
private static String staticField = getStaticField();
// 静态代码块
static {
System.out.println("子类静态代码块初始化");
}
// 普通属性
private String field = getField("子类普通属性初始化");
// 普通代码块
{
System.out.println("子类普通代码块初始化");
}
// 构造方法
public Child() {
System.out.println("子类构造方法初始化");
}
// 静态方法
public static String getStaticField() {
System.out.println("子类静态属性初始化");
String statiFiled = "子类静态属性初始化";
return statiFiled;
}
// 普通方法
public String getField(String str) {
System.out.println("子类普通方法--->" + str);
String filed = "子类普通方法--->" + str;
return filed;
}
}
main运行方法
public static void main(String[] args) {
Parent child = new Child();
child.getField("111");
}
静态代码总是最先执行, 父类总是优先于子类创建。