因為內(nèi)部內(nèi)的構(gòu)造器必須連接到指向外圍類對象的引用,所以在繼承內(nèi)部類的時候,事情會變得有點復雜。問題在于,那個指向外國類對象的“秘密的”引用必須被初始化,而在導出類中不再存在可連接的默認對象。要解決這個問題,必須使用特殊的語法來明確說清它們之間的關(guān)聯(lián):(摘抄自Thinking In Java Fourth Edition)
package edu.dlut.zxf.test;
class OutClass {
public class InnerClass {
public InnerClass() { }
}
}
class InheritInnerClass extends OutClass.InnerClass {
//public InheritInnerClass() { } //不能通過編譯
public InheritInnerClass(OutClass out) {
out.super();
}
}
public class Test {
public static void main(String[] args) {
OutClass out = new OutClass();
InheritInnerClass inherit = new InheritInnerClass(out);
System.out.println(inherit);
}
}
再看一例:
package edu.dlut.zxf.test;
class OutClass {
public class InnerClass {
private String s;
public InnerClass(String s) {
this.s = s;
}
public String toString() {
return s;
}
}
}
class InheritInnerClass extends OutClass.InnerClass {
//public InheritInnerClass() { } //不能通過編譯
public InheritInnerClass(OutClass out) {
out.super("hello, world");
System.out.println(this);
}
}
public class Test {
public static void main(String[] args) {
OutClass out = new OutClass();
InheritInnerClass inherit = new InheritInnerClass(out);
System.out.println(inherit);
}
}