静态块、构造块、构造方法、普通块
静态块:在类中用"{}"括号括起来,并在括号前用static修饰的块为静态块;静态块在类加载时候被调用,并且在整个生命中只调用一次
同步块
使用synchronize关键字修饰,并使用"{}"括起来的代码片段.它表示在同一时间只能有一个线程进入到该方法块中,
是一种多线程保护机制.
构造块:在类中直接使用"{}"括起来的代码被称为构造块;
构造方法:在对象被创建时调用;
普通块:在方法名后面使用“{}”括起来的代码,普通块只有在调用方法名时才会被调用
public class ParentClass {
static{
System.out.println("我是父类的static代码块");
}
{
System.out.println("我是父类的普通代码块");
}
public ParentClass(){
System.out.println("我是父类的构造方法");
}
public static void method(){
System.out.println("被static修饰的静态方法");
}
public static void main(String[] args) {
ParentClass parentClass = new ParentClass();
parentClass.method();
}
}
结果为:
我是父类的static代码块
我是父类的普通代码块
我是父类的构造方法
被static修饰的静态
public class ChildrenClass extends ParentClass {
static{
System.out.println("我是子类的static代码块");
}
{
System.out.println("我是子类的普通代码块");
}
public ChildrenClass(){
System.out.println("我是子类的构造方法");
}
public static void method(){
System.out.println("子类被static修饰的静态方法");
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
ParentClass parentClass = new ChildrenClass();
parentClass.method();
}
}
结果为:
我是父类的static代码块
我是子类的static代码块
我是父类的普通代码块
我是父类的构造方法
我是子类的普通代码块
我是子类的构造方法
子类被static修饰的静态方法