內部類(innerclasses) 匿名物件

2022-09-06 12:33:30 字數 1634 閱讀 3133

內部類

--把乙個類放在另乙個類的內部定義,稱為內部類。

內部類的作用:

--內部類提供了更好的封裝。只能讓外部類直接訪問,不允許同乙個包中的其他類直接訪問。

--內部類可以直接訪問外部類的私有屬性,內部類被當成其外部類的成員。 但外部類不能訪問內部類的內部屬性。

--由於內部類提供了更好的封裝特性,並且可以很方便的訪問外部類的屬性。所以,通常內部類在只為所在外部類提供服務的情況下優先使用。

內部類的分類:

--成員內部類(可以使用private、proteted、public任意進行修飾。 類檔案:外部類$內部類.class)

--非靜態內部類(外部類裡使用非靜態內部類和平時使用其他類沒什麼不同)

1、非靜態內部類必須寄存在乙個外部類物件裡。因此,如果有乙個非靜態內部類物件那麼一定存在對應的外部類物件。 非靜態內部類物件單獨屬於外部類的某個物件。

2、非靜態內部類可以使用外部類的成員,但是外部類不能直接訪問非靜態內部類成員。

3、非靜態內部類不能有靜態方法、靜態屬性、靜態初始化塊。

4、靜態成員不能訪問非靜態成員:外部類的靜態方法、靜態**塊不能訪問非靜態內部類,包括不能使用非靜態內部類定義變數、建立例項。

5、成員變數訪問要點:

--內部類裡方法的區域性變數:變數名

--內部類屬性:this.變數名

--外部類屬性:外部類名.this.變數名

6、內部類的訪問:

--外部類中定義內部類:  new innerclass()

--外部類以外的地方使用非靜態內部類:outer.inner  varname = outerobject.new inner()

--靜態內部類

定義方式:

static  class   classname {

//類體

使用要點:

--當乙個靜態內部類物件存在,並不一定存在對應的外部類物件。 因此,靜態內部類的例項方法不能直接訪問外部類的例項方法。

--靜態內部類看做外部類的乙個靜態成員。 因此,外部類的方法中可以通過:靜態內部類.名字  訪問靜態內部類的靜態成員。通過 new 靜態內部類()訪問靜態內部類的例項。

--在外部類的外面建立靜態內部類

a.b  ainner = new a.b();

--匿名內部類(常用)

--適合那種只需要使用一次的類。比如:鍵盤監聽操作等等。

定義匿名內部類的含義:

--臨時定義某一指定型別的子類

--定義後即刻建立剛剛定義的這個子類的物件

作用:建立某個型別子類物件的快捷方式。

語法:new 父類或介面(){

//進行方法的重寫;

--區域性內部類

--定義在方法內部。作用域只限於本方法。用的非常少。

匿名物件特點

--建立匿名物件直接使用,沒有變數名

--匿名物件在沒有指定其引用變數時,只能使用一次

--匿名物件可以作為方法接受的引數、方法的返回值使用

成員內部類Inner Classes

成員內部類寄生在外部類中,因此可以訪問外部類的所有成員和方法而不受修飾符限制。因為內部類是通過例項引用來和外部類建立關係的,成員內部類的成員和方法不能用static修飾。內部類可以用private修飾,而外部類是不能使用private修飾的。如果內部類僅僅在類內部使用時,使用private修飾後,就...

內部類 成員內部類 區域性內部類 匿名內部類

public class 外部類 private int num 0 外部類如果要訪問內部類的成員,則需要通過內部類的物件訪問 使用方式 1.外部類使用內部類,主函式再使用外部類 2.通過new的方式 外部類.內部類 物件名 new 外部類 new 內部類 定義在方法內部的類,就是區域性內部類,只有...

內部類(成員內部類 靜態內部類 方法內部類)

一 成員內部類 最常見的內部類就是成員內部類,也稱作普通內部類 2 inner類中定義的test 方法可以訪問outer類中的資料,不受訪問控制符的影響。3 定義了成員內部類後,必須使用外部類物件來建立內部類物件,而不能直接去 new 乙個內部類物件,即 內部類 物件名 外部類物件.new 內部類 ...