因為內部類的構造器必須連線到指向其外圍類物件的引用,所以在繼承內部類的時候,情況會變得有些複雜。問題在於,那個指向外圍類物件的「秘密的」引用必須被初始化,而在匯出類中不在存在可連線的預設物件。要解決這個問題,必須使用特殊的語法來說清它們之間的關聯。
1//外部類
2class
outer
7class
inner9}
10//
inheritinner繼承自內部類inner
11public
class inheritinner extends
outer.inner不能夠編譯通過,需要寫成下面的形式
14*/
15public
inheritinner(outer outer)
1819
/**20
* @param
args
21*/
22public
static
void
main(string args)
2627 }
可以看到,inheritinner只是繼承自內部類,而不是外部類。但是當要生成乙個構造器時,預設的構造器並不被看好,而且不能只是傳遞乙個指向外圍類物件的引用。此外,必須在構造器內使用這樣的語法:外部類引用.super()對這個秘密的外部類引用進行初始化,這樣才提供了必要的引用,然後程式才能編譯通過。
內部類繼承
成員內部類的子類可以是內部類,也可以不是內部類 當成員內部類的子類不是內部類或子類雖是內部類但與其父類不在同乙個外部類時,子類的構造方法第一句要顯式新增如下的語句 外部類物件引用.super 引數 這裡的外部類指父類所在的外部類編譯器預設給成員內部類的構造方法傳入乙個引數,該引數是內部類所依附的外部...
內部類的繼承
一 同一外包類中的內部類之間的繼承 如 a.innerclass child 繼承 a.innerclass parent eg class outer class inner 2 extends inner 1 public void demo 二 不同外包類的內部類之間的繼承 如 b.inner...
java 繼承 內部類
需要如下定義 public class outer public class extendsinner extends outer.inner 當建立乙個子類時,子類構造器總會呼叫父類的構造器,因此在建立非靜態內部類的子類時,必須 保證讓子類構造器可以呼叫非靜態內部類的構造器,呼叫非靜態內部類的構造...