靜態內部類和非靜態內部類區別:
內部類:
1. 靜態內部類:
1. 靜態內部類本身可以訪問外部的靜態資源,包括靜態私有資源。但是不能訪問非靜態資源,可以不依賴外部類實例而實例化。
2. 成員內部類:
1. 成員內部類本身可以訪問外部的所有資源,但是自身不能定義靜態資源,因為其實例化本身就還依賴着外部類。
2.成員內部類訪問規則
成員內部類不是靜態的:外部類名.內部類名 對象名 = new 外部類名().new 內部類名();
成員內部類是靜態的:外部類名.內部類名 對象名 = new 外部類名.內部類名(); 例如: Line.Point p = (new Line()).getPoint();
成員內部類不是靜態的:外部類名.內部類名 對象名 = new 外部類名().new 內部類名();
成員內部類是靜態的:外部類名.內部類名 對象名 = new 外部類名.內部類名(); 例如: Line.Point p = (new Line()).getPoint();
3. 局部內部類:
1. 局部內部類就像一個局部方法,不能被訪問修飾符修飾,也不能被static修飾。
2. 局部內部類只能訪問所在代碼塊或者方法中被定義為final的局部變量。
4. 匿名內部類:
1. 沒有類名的內部類,不能使用class,extends和implements,沒有構造方法。
2. 多用於GUI中的事件處理。
3. 不能定義靜態資源
4. 只能創建一個匿名內部類實例。
5. 一個匿名內部類一定是在new后面的,這個匿名類必須繼承一個父類或者實現一個接口。
6. 匿名內部類是局部內部類的特殊形式,所以局部內部類的所有限制對匿名內部類也有效。