天天看點

【Java筆記】java内部類

Java内部類

如果一個事物内部包含另一個事務,那麼這就是一個類内部包含另一個類

例如:身體和心髒的關系,汽車和發動機的關系

成員内部類

局部内部類(包含匿名内部類)

注意:内用外,随意通路;外用内,需要内部類對象;

間接使用:在外部類的方法中使用内部類,然後在main中調用這個外部類方法

直接使用:

外部類名稱.内部類名稱 對象名 = new 外部類名稱(). new 内部類名稱();

如果出現重名情況,格式:

外部類名稱.this.外部成員變量名

定義一個類的時候,權限修飾符規則如下:

外部類:public / (default)

成員内部類:public / protected / (default) / private

局部内部類:什麼都不寫

局部内部類,如果希望通路所在方法的局部變量,那麼這個局部變量必須是【有效final的】。

new出來的對象在堆(heap)中

局部變量是跟着方法走的,在棧(stack)當中

方法運作結束後,立刻出棧,局部變量立刻消失

但是new出來的對象會在堆(heap)中持續存在,直到垃圾回收消失

如果接口的實作類(或者是父類的子類)隻需使用唯一的一次,那麼這種情況下就可以省略掉該類的定義,而改為使用【匿名内部類】。

對格式“new 接口名稱() {...}”進行解析:

new代表建立對象的動作

接口名稱就是匿名内部類需要實作哪個接口

{...}是匿名内部類的内容

注意事項:

匿名内部類,在【建立對象】的時候,隻能使用唯一一次。如果希望多次建立對象,而且類的内容一樣的話,那麼就必須使用單獨定義的實作類了。

匿名對象,在【調用方法】的時候,隻能調用唯一一次。如果希望同一個對象,調用多次方法,那麼必須給對象起個名字。

匿名内部類是省略了【實作類/子類名稱】,但是匿名對象是省略了【對象名稱】

注意:匿名内部類和匿名對象不是一回事!!!

上一篇: Java