java 內部類

來源:互聯網
上載者:User

標籤:對象建立   匿名對象   匿名類   相關   基類   簡化   部分   增加   嵌套類   

 

內部類

顧名思義,內部類就是在內部定義的類

內部類將類置於其他類的內部。看起來像一種程式碼後置機制。

內部類瞭解外圍類,並能與之通訊。

用內部類寫出的代碼更加優雅而清晰。

 

建立內部類

直接在類裡面寫類的定義即可

 

內部類的訪問特點

內部類可以直接存取外部類的成員,包括私人

外部類要訪問內部類的成員,必須建立對象

外部類名.內部類名    對象名 = 外部類對象.內部類對象

 

連結到外部對象

當產生一個內部類的對象時,此對象與製造它的外圍對象之間就有了一種聯絡,

所以它能訪問其外圍對象的所有成員,而不需要任何特殊條件。

此外,內部類還擁有其外圍類的所有元素的訪問權。

當某個外圍類的對象建立了一個內部類對象時,此內部類對象必定會秘密地捕獲一個指向那個外圍類對象的引用。

然後,在訪問外圍類成員時,就是用那個引用來選擇外圍類的成員。

 

內部類的對象只能在與其外圍類的對象相關聯的情況下才能被建立。

構建內部類對象時,需要一個指向外圍類對象的引用。

 

.this與.new

如果需要產生對外部類對象的引用,可以使用外部類名字後面緊跟圓點和this。

如果想告知某些其它對象,去建立其某個內部類的對象。可以使用其他外部類對的引用根圓點和new 

 

在擁有外部類對象之前是不可能建立內部類對象的。

因為內部類對象會暗暗地串連到它的外部類對象上。

但是如果全是嵌套類(靜態內部類),那就不需要對外部類對象的引用。

 

內部類與向上轉型

當將內部類向上轉型為其基類,尤其是轉型為一個介面的時候,內部類很有用。

從實現了某個介面的對象,得到對此介面的引用,與向上轉型為這個對象的基類,實質上效果是一樣的。

這是因為此內部類---某個介面的實現---能夠完全不可見,並且不可用。

所得到的只是指向基類或介面的引用,所以能夠很方便地隱藏實現細節。

 

當取得了一個指向基類或介面的引用時,甚至可能無法找出它的確切的類型。

 

private內部類可以完全阻止任何依賴於類型的編碼,並且完全隱藏了實現的細節。

從用戶端程式員的角度來看,由於不能訪問任何新增加的、原本不屬於公用介面的方法,

所以擴充介面是沒有價值的。這也給java編譯器提供了產生更搞笑代碼的機會。

 

在方法和範圍內的內部類

如果實現了某類型的介面,於是可以建立並返回對其的引用

要解決一個複雜的問題,想建立一個類來輔助解決,但又不希望這個類是可共用的。

 

一個定義在方法中的類

一個定義在範圍中的類,此範圍在方法的內部

一個實現了介面的匿名類

一個匿名類,它擴充了有非預設構造器的類

一個匿名類,它執列欄位初始化

一個匿名類,它通過執行個體初始化實現構造(匿名類不可能有構造器)

 

匿名內部類

匿名內部類是局部內部類的一種,是一種簡化的寫法。

前提是存在一個類或者介面。這裡的類可以是具體類也可以是抽象類別

本質是一個繼承了該類或實現了該介面的子類匿名對象

 

嵌套類

如果不需要內部類對象與其外圍類對象之間有聯絡,可以將內部類聲明為static。

這樣的內部類稱為嵌套類。

當內部類是static時:

  要建立嵌套類的對象,並不需要外圍類的對象

  不能從嵌套類對象中訪問非靜態外圍類對象

普通內部類的欄位與方法,只能放在類的外部層次上,所以普通的內部類不能有static資料和static欄位,也不能包含嵌套類,

但是嵌套類可以包含以上的東西。

嵌套類不保留外部類的this引用,類似一個static方法

 

嵌套類可以作為介面的一部分。

 

內部類的繼承

 

內部類可以被覆蓋嗎

 

局部內部類

 

內部類別識別項

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.