關於內部類

2021-08-08 05:32:20 字數 1484 閱讀 7151

內部類可以大概分為四種:

1.成員內部類

2.區域性內部類

3.巢狀內部類

4.匿名內部類

1.首先是成員內部類,其作為外部類的成員存在。所以內部類可以訪問外部類的一切成員和方法(即使這個方法是私有的)。但是外部類若是想使用內部類的變數和方法則需要使用內部類的物件來獲取。

一定要記住成員內部類不能含有靜態變數和方法(不是絕對的)

public

class

innerclassdemo

} //**出自:

因為作為乙個內部類,應該首先建立外部類然後才存在內部類。靜態方法是在類被載入的時候就被初始化了,那麼內部類也就被同時載入了,那麼不要外部類就可以建立內部類物件了,因為成員內部類是外部類的成員,內部類的建立必須依賴於外部類。所以有了靜態變數和方法就使得成員內部類脫離了外部類的掌控。這就違背了成員內部類的定義。所以成員內部類不允許有靜態變數和方法。

我們上面說了內部類物件的建立依賴外部類:

所以使用outer.inner obj = outerobj.new inner();建立內部類。

public

class outer

}public inner getinner()

}

2.區域性內部類,是指內部類定義在方法和作用域內,且只在所在的方法和作用域內可以應用。

3.巢狀內部類

巢狀內部類,就是修飾為static的內部類。

宣告為static的內部類,不需要內部類物件和外部類物件之間的聯絡,就是說我們可以直接引用outer.inner,即不需要建立外部類,也不需要建立內部類。

巢狀類和普通的內部類還有乙個區別:普通內部類不能有static變數和static方法,也不能包含巢狀類,但巢狀類可以。而巢狀類不能宣告為private,一般宣告為public,方便呼叫。

4.匿名內部類

何為匿名內部類?就是沒有名字,只有返回inner物件的方法。

我們之前的成員內部類提供了兩種建立內部類的方法:

outer out=new outer();

outer.inner inner = out.new inner();

in=out.getinner();

第二種方法就是我們想要的,可以在getinner方法內部新增上屬性和方法,這樣就可以產生乙個匿名內部類。

public inner getinner(final string name, string city)  

}; }

以上就是關於內部類的簡單介紹,如果錯誤歡迎指正。

關於內部類

對內部類用的少,基本上都有點陌生了。今天看到乙個部落格感覺還不錯就轉了過來。先謝謝博主!1 關於內部類的說明 1 在乙個類中定義另外乙個類,這個類就叫做內部類 inner class 內部類的定義和普通類的定義沒什麼區別,它可以直接訪問和引用它的外部類的所有變數和方法 包括private 就像外部類...

關於內部類

整理關於內部類的一些知識 什麼是內部類 概念 在乙個類的內部再定義乙個完整的類 特點 成員內部類outer out new outer outer.inner oi out.new inner package com.company public class main class outer 靜態內...

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

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