java面對對象(六)--內部類、匿名內部類

來源:互聯網
上載者:User

標籤:靜態變數   方式   final   概念   成員內部類   strong   new   匿名內部類   位置   

內部類

可以在一個類的內部定義另一個類這種類成為內部類或嵌套類,比如:

 1 class Outer{ 2     … 3     class Inner{ 4         …. 5     } 6 } 7 class Outer1{}       // 這個Inner1不是Outer1的內部類,不在Outer1的類體括弧內 8     class Innter1{ 9     ……10     }11 Class Outer2{      //Inner2雖然是在Outer2的方法內,但還是在Outer2的類體括弧內,是內部類12     ……13     public void test(){14         class Inner2{15         ….16         }17     }18 }

內部類有什麼問題和好處:

  • 問題:外部類不使用或不建立外部類對象,就不能直接建立內部類對象
  • 好處:外部類的私人屬性,內部類可使用,而且不破壞封裝,這也是為什麼內部類存在的重要原因


內部類的特性

  • 內部類的特徵與變數概念特性很相似
  • 內部類的位置與變數位置相似
  • 變數可分為執行個體變數(成員變數),局部變數,靜態變數
  • 內部類與變數相似,也可分為四種


內部類的分類
靜態內部類,成員內部類,局部內部類,匿名內部類

成員內部類

1.使用成員內部類就象使用成員變數一樣,在本類的主方法中則直接使用成員內部類,不用加上外部類的名字來訪問。但在其他類的主方法中要使用成員內部類則就需要使用外部類.內部類來訪問。
2.使用外部類名來訪問內部類還因為一個內部類可能有不同的外部類
3.建立一個成員內部類對象必須先建立外部類的對象,因為成員內部類要訪問外部類的成員
4.成員內部類可以訪問外部類的所有屬性
5.成員內部類中不能定義有靜態屬性
6.當外部類的成員與內部類成員,內部類中局部變數同名時,則使用三種不同方式訪問

  • 直接使用變數名則訪問局部變數
  •  使用this.變數名則訪問內部類的成員
  • 使用外部類名.this.變數名則訪問外部類的成員

靜態內部類

  • 在成員位置上定義為static的內部類,稱為靜態內部類
  • 靜態內部類類似於靜態變數,修飾靜態變數的修飾符也可以修飾靜態內部類
  • 靜態內部類與靜態方法,靜態屬性相似,訪問靜態方法,靜態屬性用類名.屬性名稱/方法名訪問,但是在本類中可不用類名.來訪問。靜態內部類也一樣,在本類方法中訪問則不用加上外部類名來訪問,若在其他類的方法中則要加外部類名.內部類名來訪問。
  • 靜態內部類中只能訪問外部類的靜態成員和本內部類的成員
  • 靜態內部類中不能訪問外部類的非靜態成員

匿名內部類

1.匿名內部類是一種特殊的局部內部類,局部內部類可以轉化為匿名內部類
2.局部內部類要轉化為匿名內部類必須具備3個條件

  • 首先是一個局部內部類,也是一個私人的內部類
  • 該局部內部類實現一個介面或繼承一個父類
  • 局部內部類只new一次建立一個對象

3.匿名內部類就是無顯式地聲明某個類名來實現介面,而直接實現介面的方法的類

4.匿名內部類不能定義構造方法,因為匿名內部類是一個特殊局部內部類,它沒有類名。

5.匿名內部類可以訪問外部類的局部變數,但也要求外部類的局部變數是final型的才能訪問

6.匿名內部類可以訪問外部類的屬性

7.匿名內部類可以在一個類的方法中建立,同樣可以在一個類的主方法中實現。

8.當繼承的父類中抽象方法與實現的介面中方法同名,同參數列表,同傳回型別,則子類唯寫一個方法實現就可以了

9.當繼承的父類中抽象方法與實現的介面中的方法同名,但傳回型別不同,則子類就必須寫出每個方法,但這樣的方法集同名,傳回型別不一樣則認為是同一方法,又不能構成重載,則就會編譯出錯

java面對對象(六)--內部類、匿名內部類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.