龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

从内部类继承

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
由于内部类构建器必须同封装类对象的一个句柄联系到一起,所以从一个内部类继续的时候,情况会稍微变得有些复杂。这儿的问题是封装类的“秘密”句柄必须获得初始化,而且在衍

  由于内部类构建器必须同封装类对象的一个句柄联系到一起,所以从一个内部类继续的时候,情况会稍微变得有些复杂。这儿的问题是封装类的“秘密”句柄必须获得初始化,而且在衍生类中不再有一个默认的对象可以连接。解决这个问题的办法是采用一种非凡的语法,明确建立这种关联:
  
  //: 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();
  
  它提供了必要的句柄,以便程序正确编译。
  
精彩图集

赞助商链接