內部類實例必須綁定一個外部類實例。繼承內部類時,衍生類構造器需顯式提供此綁定。
class WithInner { class Inner {} }
class InheritInner extends WithInner.Inner { // 直接繼承內部類
// InheritInner() {} // 編譯錯誤:缺外部實例
InheritInner(WithInner wi) {
wi.super(); // 關鍵語法:綁定外部實例 wi
}
public static void main(String[] args) {
WithInner wi = new WithInner();
InheritInner ii = new InheritInner(wi);
}
}
WithInner.Inner 為被繼承的內部類完整名稱。WithInner wi 接收外部類實例。wi.super() 將 wi 作為外部實例傳給基類內部類構造器,完成綁定。| 場景 | 繼承外部類 | 繼承內部類 |
|---|---|---|
| 隱式綁定 | 自動(子類構造器調用 super() 即綁定) | 無默認外部實例,必須顯式傳入 |
| 構造器語法 | super() 或 super(args) | outerInstance.super() |
| 訪問外部成員 | 繼承獲得 | 需通過綁定的外部實例訪問 |
較少見,但當需要「擴展某個框架的內部事件類」且不想繼承整個外部框架類時有用。