SCJP筆記 章八 內部類

2021-08-25 15:21:19 字數 1415 閱讀 8096

第八章 內部類

[color=red]內部類[/color]

常規內部類在另乙個類的波形括號內宣告,單位與任何方法或其它**塊之外

內部類是封裝類(外部類)乙個完整的成員,因此,他能夠使用訪問修飾符標識,也能使用abstract或final修飾符標識,但是不能同時使用。

內部類例項與封裝類例項共享一種特殊關係,這種關係使內部類可以訪問外部類的所有成員,包括私有成員。

在封裝類內部例項化內部類,如下:myinner mi=new myinner();

在封裝類的例項方法之外例項化內部類,如下:myouter mo=new myouter();myouter.myinner inner=mo.new myinner();

在內部類**中,關鍵字this表示內部類例項的引用。為了引用外部類,應該使用如下:myouter.this;

[color=red]區域性方法內部類[/color]

區域性方法內部類在封裝類的方法內定義。

區域性方法內部類的例項化必須發生在同乙個方法內,但位於該類的定義**之後。

class myouter}

myinner mi =new myinner();

mi.seeouter();

區域性方法內部類不能使用在該方法內宣告的變數,除非變數是final的,但是可以使用封裝類的所有成員變數

區域性方法內部類的修飾符只有abstract和final。訪問修飾符等都不可以用。

在乙個靜態方法內宣告的區域性方法內部類只能訪問該封裝類的靜態成員,不能訪問例項變數。

[color=red]匿名內部類[/color]

匿名內部類沒有名稱,它的型別是乙個命名型別的子類,或者是介面的實現。

不要忘記匿名內部類波形括號之後的分號。如果是區域性方法內部類,則是:});如果只是普通的舊式匿名類,就是};

在匿名內部類引用上能夠呼叫的方法必須是在引用變數類(或者介面),也可以理解為父類中,定義的方法,即使該匿名類確實是引用變數型別的子類或實現。

匿名內部類只可以擴充套件或者實現乙個藉口,兩者取其一,也不能實現多個介面。這個和別的內部類不同。

[color=red]變元內宣告的匿名內部類[/color]

class mywonderfulclass

});}

}inte***ce foo

class bar}

[color=red]靜態巢狀類[/color]

靜態巢狀類是用static修飾符表示的內部類

靜態巢狀類是乙個頂級巢狀類。

由於巢狀類是靜態的,所以它不與外部類例項共享任何關係。事實上,不需要外部類例項來例項化靜態巢狀類。

例項化靜態巢狀類需要使用外部類名稱和巢狀類名稱,如下:

bigouter.nested n =new bigouter.nested();

靜態巢狀類不能訪問外部類的非靜態成員,因為它沒有對外部例項的隱含引用。

第八章 內部類

1.內部類 1 常規 內部類在另乙個類的波形括號內宣告,但位於任何方法或其它 塊之外 2 內部類是封裝類 外部類 乙個完整的成員,因此,它能夠使用訪問修飾符標識,也能使用abstract 或final 修飾符標識 但二者不能同時使用,abstract 一定要子類化,而final 不能被子類化 3 內...

第10章 內部類

10.1建立內部類 內部類 將乙個類的定義放在另乙個類的定義內部 外部類中使用內部類 例項成員中使用內部類 和使用普通類沒差別 靜態成員中使用內部類 要指明物件的型別,outerclassname.innerclassname 10.2鏈結到外部類 內部類可以訪問外部類的所有成員 迭代器模式 10....

JAVA筆記 內部類

成員內部類 普通呼叫方法 outer.inner oi new outer new inner 靜態呼叫方法 1.outer.inner oi new outer.inner 2.outer.inner.show 內部類用private修飾 無法再main函式中呼叫,怎麼辦呢?在外部類中建立乙個方法...