从内部类担任
由于内部类构建器必需同封装类工具的一个句柄接洽到一起,所以从一个内部类担任的时候,环境会稍微变得有些巨大。这儿的问题是封装类的“奥秘”句柄必需得到初始化,并且在衍生类中不再有一个默认的工具可以毗连。办理这个问题的步伐是回收一种非凡的语法,明晰成立这种关联:
//: InheritInner.java // Inheriting an inner class class WithInner { class Inner {} } public class InheritInner extends WithInner.Inner { //! InheritInner() {} // Won't compile InheritInner(WithInner wi) { wi.super(); } public static void main(String[] args) { WithInner wi = new WithInner(); InheritInner ii = new InheritInner(wi); } } ///:~
从中可以看到,InheritInner只对内部类举办了扩展,没有扩展外部类。但在需要建设一个构建器的时候,默认工具已经没有意义,我们不能只是通报封装工具的一个句柄。另外,必需在构建器中回收下述语法:
enclosingClassHandle.super();
它提供了须要的句柄,以便措施正确编译。