標籤:eve 嵌套 類型 window listen 實現 void color 代碼
Java的內部類(Inner Class)與C++所說的嵌套類(Nested Class)類似,只是說法不同而已。
Java有4種形式的內部類:靜態內部類、成員內部類(普通內部類)、局部內部類、匿名內部類。
例如:
class outerClass{ static class innerClass{}//靜態內部類}class outerClass{ class innerClass{}//成員內部類(普通內部類)}class outerClass{ public void memberFunction(){ class innerClass{}//局部內部類 }}class MyFrame extends Frame{ //外部類 public MyFrame(){ addWindowListener(new WindowAdapter(){ //匿名內部類 public void windowClosing(WindowEvent e){ dispose(); System.exit(); } }); }}
- 靜態內部類的特點:被聲明為static的內部類,它可以不依賴於外部類的執行個體化而被執行個體化,而普通的內部類需要在外部類被執行個體化之後才能執行個體化。靜態類不可以與外部類具有相同的名字,不能訪問外部類的普通成員變數,只能訪問外部類的靜態成員、靜態方法(包括私人類型)、建構函式。
- 成員內部類:靜態內部類去掉static關鍵字就成為普通的成員內部類。成員內部類為非靜態內部類,它能訪問外部類的所有屬性和方法。但它與一個外部類的執行個體綁定在一起,因此不可以有靜態屬性和方法。成員內部類只能在外部類被執行個體化之後才能被執行個體化。
- 局部內部類:是指定義在一個代碼塊內的類,它的作用範圍為其所在的代碼塊,是內部類中最少使用到的一種類型。局部內部類像局部變數一樣,不能被public、protected、private、static修飾,只能存取方法中定義為final類型的局部變數。局部靜態內部類與靜態內部類的基本特性相同。
- 匿名內部類:是一種沒有類名的內部類,不適用class,extends,implements,沒有建構函式,它必須繼承其他類或實現其他介面。使用匿名內部類的好處是使得代碼更加簡潔,但會使得代碼可讀性降低。它一般應用於GUI編程中的事件處理。匿名內部類不能定義自己的靜態成員、方法和類。匿名內部類一定是跟在new的後面,匿名內部類也是一種局部內部類,所有對局部內部類的要求也適用於匿名內部類。
註:以上內容摘自何昊的《Java程式員面試筆試寶典》一書。
Java的內部類