public InterClass1(OutClass outClass, String name) {
outClass.super(name);
}
}
}
复制代码
作者: 王春艳 时间: 2011-10-7 12:13
可以
public class First {
class ClassFirst extends Second.ClassS{
public ClassFirst(Second s){
s.super();
}
}
}
class Second{
class ClassS{
public ClassS(){}
}
}
是这意思吧作者: 张雷 时间: 2011-10-7 16:56
可以的,希望对你有帮助
因为内部类的构造器要用到其外围类对象的引用,所以在你继承一个内部类的时候,事情变得有点复杂。问题在于,那个“秘密的”外围类对象的引用必须被初始化,而在被继承的类中并不存在要联接的缺省对象。要解决这个问题,需使用专门的语法来明确说清它们之间的关联:
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();
这样才提供了必要的引用,然后程序才能编译通过。作者: 王家俊 时间: 2011-10-7 23:27
可以的,格式是:
class OutOne{
class InnerOne extends OutTwo.InnerTwo{}
}
calss OutTwo{
class InnerTwo{}
}
只需指明继承谁的外部类的内部类就可以了。