Tin*_*nki 6 java anonymous initialization
我们假设我们有一个班级:
public class SomeClass {
protected SomeClass () {
}
}
Run Code Online (Sandbox Code Playgroud)
在MainClass位于不同的包中我尝试执行两行:
public static void main(String[] args) {
SomeClass sac1 = new SomeClass();
SomeClass sac2 = new SomeClass() {};
}
Run Code Online (Sandbox Code Playgroud)
由于protected构造函数,在这两种情况下我都希望程序失败.令我惊讶的是,匿名初始化工作正常.有人可以解释为什么第二种初始化方法可以吗?
你的匿名课
SomeClass sac2 = new SomeClass() {};
Run Code Online (Sandbox Code Playgroud)
基本上变成了
public class Anonymous extends SomeClass {
Anonymous () {
super();
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数没有访问修饰符,因此您可以在同一个包中无问题地调用它.您也可以调用,super()因为protected可以从子类构造函数访问父构造函数.