public class Snippet extends supperone{
public static void main(String[] args) {
new Thread() {
{ setDaemon(true); }
public void run() {
System.out.println("acquired");
}
}.start();
}
}
写道
{ setDaemon(true); }
就是类语句块;
对象的初始化过程:先初始化父类的静态成员,再初始化子类的静态成员,然后是父类的非静态块,接着是父类的构造方法,然后是子类的非静态块,最后调用子类的构造方法。
也就是说创建匿名类Thread的时候,先初始化Thread的静态成员,在初始化匿名类的静态成员,然后是Thread的非静态块,接着是父类的构造方法,然后是子类(匿名类)的非静态块,最后是子类的构造方法。
就是说子类(匿名类)的非静态块可以调用父类的方法,因为父类已经构造完成。