靜態(tài)內(nèi)部類、成員內(nèi)部類、局部?jī)?nèi)部類和匿名內(nèi)部類

靜態(tài)內(nèi)部類、成員內(nèi)部類、局部?jī)?nèi)部類和匿名內(nèi)部類

  1. 靜態(tài)內(nèi)部類(Static Inner Class):是指被聲明為static的內(nèi)部類。它可以不依賴于外部類實(shí)例而被實(shí)例化,而通常的內(nèi)部類需要在外部類實(shí)例化后才能實(shí)例化。靜態(tài)內(nèi)部類不能與外部類有相同的名字。不能訪問(wèn)外部類的普通成員變量,只能訪問(wèn)外部類中的靜態(tài)成員和靜態(tài)方法(包括私有類型)
    例如:
class outerClass{
    static class innerClass{}//靜態(tài)內(nèi)部類
}
  1. 成員內(nèi)部類(Member Inner Class):一個(gè)靜態(tài)內(nèi)部類,去掉static關(guān)鍵字就成為了成員內(nèi)部類,成員內(nèi)部類為非靜態(tài)內(nèi)部類,它可以自由的引用外部類的屬性和方法,無(wú)論這些屬性和方法是靜態(tài)的還是非靜態(tài)的。但是它與一個(gè)實(shí)例綁定在一起了,不可以定義靜態(tài)的屬性和方法。只有在外部的類被實(shí)例化后,這個(gè)內(nèi)部類才能被實(shí)例化。值得注意的是,非靜態(tài)內(nèi)部類中不能有靜態(tài)成員。
    例如:
class outerClass{
    class innerClass{}//成員內(nèi)部類
}
  1. 局部?jī)?nèi)部類(Local Inner Class):指的是定義在一個(gè)代碼塊中的類,它的作用范圍為其所在的代碼塊,是內(nèi)部類中最少使用到的一種類型。局部?jī)?nèi)部類就像局部變量一樣,不能被public、protected、private以及static修飾,只能訪問(wèn)方法中定義為final類型的局部變量。
    對(duì)于一個(gè)靜態(tài)內(nèi)部類,去掉其聲明中的static關(guān)鍵字,將其定義移入其外部類的靜態(tài)方法或靜態(tài)初始化代碼塊中就成為了局部靜態(tài)內(nèi)部類
    對(duì)于一個(gè)成員類,將其定義移入其外部類的實(shí)例方法或?qū)嵗跏蓟a塊中就成為了局部類。
    局部靜態(tài)內(nèi)部類和靜態(tài)內(nèi)部類的基本特性相同。局部?jī)?nèi)部類和內(nèi)部類的基本特性相同
    例如:
class outerClass{
    public void menberFunction(){
        class innerClass{}//局部?jī)?nèi)部類
    }
}
  1. 匿名內(nèi)部類(Anonymous Inner Class):是一種沒(méi)有類名的內(nèi)部類,不使用關(guān)鍵字class、extends和implements,沒(méi)有構(gòu)造方法,它必須繼承其他類或?qū)崿F(xiàn)其他接口。匿名內(nèi)部類的好處一般是代碼更加簡(jiǎn)潔、緊湊,但帶來(lái)的問(wèn)題是易讀性下降。一般適用于GUI編程中實(shí)現(xiàn)事件處理
public class MyFrame extends Frame {
//外部類
    public MyFrame() {
        addWindowListener(new WindowAdapter() {
                 //匿名內(nèi)部類
            @Override
            public void windowClosing(WindowEvent e) {
                dispose();
                System.exit(0);
            }
        });
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java 內(nèi)部類 分四種:成員內(nèi)部類、局部?jī)?nèi)部類、靜態(tài)內(nèi)部類和匿名內(nèi)部類。 1、成員內(nèi)部類: 即作為外部類的一個(gè)成...
    ikaroskun閱讀 1,358評(píng)論 0 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,740評(píng)論 18 399
  • 說(shuō)起內(nèi)部類這個(gè)詞,想必很多人都不陌生,但是又會(huì)覺(jué)得不熟悉。原因是平時(shí)編寫代碼時(shí)可能用到的場(chǎng)景不多,用得最多的是在有...
    Java架構(gòu)師Carl閱讀 498評(píng)論 0 3
  • 第一章 校園里的小孩 四月的一個(gè)傍晚,夕陽(yáng)西下,天邊的晚霞像是小女孩害羞的臉龐,略帶紅暈。天朗氣清,和風(fēng)徐徐。 王...
    頌亦閱讀 519評(píng)論 0 2
  • 夜在月光中蘇醒 狂歡吧 黑暗中的生靈 夜貓 開(kāi)始發(fā)情 死去的樹(shù)枝 復(fù)活 奏起了二弦琴 夜鶯 將眼睛瞪成貓頭鷹 黑暗...
    秋鶴閱讀 176評(píng)論 0 1

友情鏈接更多精彩內(nèi)容