java内部类的继承问题(thinkinginjava3thp294)

文章作者 100test 发表时间 2007:10:19 12:04:04
来源 100Test.Com百考试题网


因为内部类的构造器要用到其外围类对象的引用,所以在你继承一个内部类的时候,事情变得有点复杂。问题在于,那个“秘密的”外围类对象的引用必须被初始化,而在被继承的类中并不存在要联接的缺省对象。要解决这个问题,需使用专门的语法来明确说清它们之间的关联:
class WithInner {
class Inner {
Inner(){
System.out.println("this is a constructor in WithInner.Inner").
}.
}
}

public class InheritInner extends WithInner.Inner {
// ! InheritInner() {} // Won’t compile
InheritInner(WithInner wi) {
wi.super().
System.out.println("this is a constructor in InheritInner").
}

public static void main(String[] args) {
WithInner wi = new WithInner().
InheritInner ii = new InheritInner(wi).
}
}

输出结果为:
this is a constructor in WithInner.Inner
this is a constructor in InheritInner

可以看到,InheritInner 只继承自内部类,而不是外围类。但是当要生成一个构造器时,缺省的构造器并不算好,而且你不能只是传递一个指向外围类对象的引用。此外,你必须在构造器内使用如下语法:
enclosingClassReference.super().
这样才提供了必要的引用,然后程序才能编译通过。

相关文章


在java中实现递归算法的方法
Java中应用Filter对权限和Se ion控制
Java使用native方法来扩展Java程序的功能
java内部类的继承问题(thinkinginjava3thp294)
在java中将对象转化为byte数组的方法
使FileWriter可以写utf-8的解决方法
jsecli e的安装以及中文问题
使用swt做界面,让窗口大小固定的方法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛