【发布时间】:2015-06-17 00:56:48
【问题描述】:
我正在学习内部课程。出于好奇,我扩展了具有参数化构造函数的内部类。但是当我写 super(int i) 来调用它时,代码不会编译。
class Outer{
class Inner{
private int a;
Inner(int i){
this.a=i;
}
public void inheritFromInner(){
System.out.println("Inherited from inner");
}
}
}
class Test extends Outer.Inner{
Test(int r){
super(r);// This line does not compile.
}
}
由于内部类是外部类的一部分(成员),它们必须通过外部类访问。如何调用Test类的超级构造函数。
编译错误是:由于一些中间构造函数调用,没有可用的外部类型的封闭实例
【问题讨论】:
-
编译器给你的错误信息是什么?这是您要编译的确切代码吗?
-
@matt : 由于一些中间构造函数调用,没有可用的 Outer 类型的封闭实例
-
你的内部类要求它有一个外部类的实例不会因为你继承它而消失。
-
我试过这个..... new Outer().super(r); ..它起作用了,调用了内部类的构造函数... :-)
标签: java inner-classes