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);
System.out.println(ii);
}
}class WithInner{
class Inner{}
}
wi.super()指向class Inner{} 請問為什麽? 是特定的語法要求嗎?多謝
在这个问题中super()的执行就是执行了Outer.Inner 的默认构造函数。
构造函数继承
规则:
1 子类无条件继承父类不含参数的构造函数
2 若子类无自己的构造函数,父类的无参构造函数做为子类构造函数,若有创建对象先执行父类无参构造函数,再执行自己的构造函数
3 父类中含参构造函数,子类可以在自己的构造函数中用super()来调用,必须放在第一句.
public OutputInnerClass(ClassA a)
{a.super();
}}
class ClassA{
class ClassB{}
}这玩意儿看看有个印象就好 一般没什么用
在某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。