java 內部類 自己的一些理解

2021-09-06 09:28:13 字數 1604 閱讀 7651

注意!~ 

內部類相同於 外部類的乙個屬性  和 外部類的其他屬性 是同級的 只不過訪問的方式不同 (內部類私有的方法肯定也能被外部類訪問)

內部類可以訪問外部類的任意變數和方法(除了靜態內部類)。

靜態方法裡面 只能訪問 靜態變數和靜態方法 定義在自己方法裡面的區域性變數

內部類中只有靜態內部類才能定義 靜態成員(靜態變數和靜態方法).

成員內部類

裡面只能定義非靜態的變數和方法(非靜態的 也就是不帶關鍵字static 的變數)

有外部類的引用 外部類名.this 引用

成員內部類裡面不能定義靜態內部類

靜態內部類

裡面定義 靜態的變數和方法 非靜態的變數和方法

只能訪問外部類靜態的變數和方法

沒有外部類的引用

匿名內部類

經常用來 作為某個類的唯一子類或者 某個介面的唯一實現類(如果要繼承的父類 只有有參的構建函式 那麼就必須要用super關鍵字 呼叫它有引數的構建函式 要不報錯)

區域性內部類

在外部類方法體中定義的類叫區域性內部類,區域性內部類能只用 預設修飾符和 final修飾符修飾 abstract修飾符,訪問方法的區域性變數時,方法的區域性變數帶final 才能被訪問。

內部類總結:

1.首先,把內部類作為外部類的乙個特殊的成員來看待,因此它有類成員的封閉等級:private ,protected,預設(friendly),public

它有類成員的修飾符:   static,final,abstract

2.非靜態內部類nested inner class,內部類隱含有乙個外部類的指標this,因此,它可以訪問外部類的一切資源(當然包括private)

外部類訪問內部類的成員,先要取得內部類的物件,並且取決於內部類成員的封裝等級。

非靜態內部類不能包含任何static成員.

3.靜態內部類:static inner class,不再包含外部類的this指標,並且在外部類裝載時初始化.靜態內部類能包含static或非static成員.

靜態內部類只能訪問外部類static成員.

外部類訪問靜態內部類的成員,循一般類法規。對於static成員,用類名.成員即可訪問,對於非static成員,只能用物件.成員進行訪問

類成員有兩種static , non-static,同樣內部類也有這兩種

non-static 內部類的例項,必須在外部類的方法中建立或通過外部類的例項來建立(outerclassinstancename.new innerclassname(constructorparameter)),並且可直接訪問外部類的資訊,

外部類物件可通過outerclassname.this來引用

static 內部類的例項, 直接建立即可,沒有對外部類例項的引用。

內部類不管static還是non-static都有對外部類的引用(不然的話 無法呼叫外部類的變數和方法)

non-static 內部類不允許有static成員

方法中的內部類只允許訪問方法中的final區域性變數和方法的final引數列表,外部類中的方法和變數也可以被訪問。方法中的內部類不能在方法以外訪問.

匿名內部類如果繼承自介面,必須實現指定介面的方法. 匿名內部類如果繼承某類,呼叫的構建函式要根據情況用無參還是有參的構建函式。

理解java內部類

內部類概念 1 什麼是內部類 將類寫在其他類的內部,可以寫在其他類的成員位置和區域性位置,這時寫在其他類內部的類就稱為內部類。其他類也稱為外部類。2 什麼時候使用內部類 在描述事物時,若乙個事物內部還包含其他可能包含的事物,比如在描述汽車時,汽車中還包含這發動機,這時發動機就可以使用內部類來描述。c...

java內部類的理解

內部類訪問特點 1,內部類可以直接訪問外部類中的成員。2,外部類要訪問內部類,必須建立內部類的物件。分析事物時,發現該事物描述中還有事物,而且這個事物還在訪問被描述事物的內容。這時就是還有的事物定義成內部類來描述。注意 1.如果內部類中定義了靜態成員,該內部類也必須是靜態的。2.如果內部類是靜態的。...

內部類的一些知識

小弟最近學習內部類總結了下面一些內容,參考了一些資料,不足之處請指出,謝謝!成員內部類 相當於類的非靜態成員,可以用許可權修飾符來修飾,包括private protected public.1 定義成員內部類 class outter 外部類的普通成員 int j 0 2 外部類之內置立成員內部類物...