目录
知识点
- static修饰的东西都是属于类一级别的,当类加载时会顺序加载类变量、构造代码块以及类方法。
- 在子类创建对象(实例化)时先加载父类static代码再去加载子类的static代码,也反映出了子类和父类的加载顺序。
- 构造块的执行的优先级要大于构造函数的。
- 在子类创建对象时会调用父类的无参构造方法。
demo
public class Test {
static String str ="test";
String name;
public Test(){
System.out.println("父类构造方法");
}
static{
System.out.println("父类静态代码块");
if ("test".equals(str)){
System.out.println("顺序加载");
}
}
{
System.out.println("父类构造块");
}
public static void main(String[] args) {
//实例化一个SubClass
new SubClass();
}
}
class SubClass extends Test{
SubClass(){
System.out.println("子类构造方法");
}
static{
System.out.println("子类静态代码块");
}
{
System.out.println("子类构造块");
}
}
执行结果:
父类静态代码块
顺序加载
子类静态代码块
父类构造块
父类构造方法
子类构造块
子类构造方法