测试
首先准备一个父类,一个子类,一个测试类
父类SuperClass
public class SuperClass {
static{
System.out.println("父类静态代码块");
}
{
System.out.println("父类代码块");
}
public SuperClass() {
System.out.println("父类构造函数");
}
}
子类SubClass
public class SubClass extends SuperClass{
static{
System.out.println("子类静态代码块");
}
public SubClass() {
System.out.println("子类构造函数");
}
{
System.out.println("子类代码块");
}
}
测试类Test
public class Test {
public static void main(String[] args) {
SubClass subClass=new SubClass();
System.out.println("");
SubClass subClass1=new SubClass();
}
}
运行结果
父类静态代码块
子类静态代码块
父类代码块
父类构造函数
子类代码块
子类构造函数
父类代码块
父类构造函数
子类代码块
子类构造函数
总结
1.被static关键字所修饰的属性和方法 被整个程序共享,通过类名直接调用
2.静态方法中不能访问非静态变量和方法
3.在非静态方法中不能声明静态的局部变量
4.被static修饰的属性 优先被加载 优先于主方法
5.静态代码块只执行一次优先于代码块和构造方法
6.静态代码块和静态变量同时存在时 按照先后顺序执行