请问:
class WithInner
{
class Inner
{}
}
class InheritIneer extends WithInner.Inner
{
InheritIneer(WithInner w1)
{
// InheritIneer(){}不能编译
w1.super();
}
public static void main(String[]args)
{
WithInner w1 = new WithInner();
InheritIneer w2 = new InheritIneer(w1);
}
}w1.super() 调用的是WithInner父类的构造方法啊 而实际上是要调用WithInner的构造方法啊
我认为应该使用Inner对象的super才对啊
class WithInner
{
class Inner
{}
}
class InheritIneer extends WithInner.Inner
{
InheritIneer(WithInner w1)
{
// InheritIneer(){}不能编译
w1.super();
}
public static void main(String[]args)
{
WithInner w1 = new WithInner();
InheritIneer w2 = new InheritIneer(w1);
}
}w1.super() 调用的是WithInner父类的构造方法啊 而实际上是要调用WithInner的构造方法啊
我认为应该使用Inner对象的super才对啊
所以在构造InheritInner之前 必须要有一个WithInner类的实例化对象才行
w1.super()的调用就是完成了因为中间构造器调用所需的enclosing instance的实例化
语法格式是这样的 试着去掉或者改成w1 = new WithInner();就会发现了
class WithInner{
class Inner{}
} public class IneritInner extends WithInner.Inner{
//!InheritInner(){} //Won’t compile
InheritInner (WithInner wi) {
wi.super();
}
}
InheritInner继承的是inner class而非outer class。但是当编译至构造函数时,default构造函数有问题;而且你也不能够只是传入一个reference指向outer object,你还必须在构造函数中使用以下语法:
enclosingClassReference.super();
麻烦lz把意思说清楚.
按照我的理解, w1.super(); 这行没什么用.不知道lz想要做什么.