java基礎 內部類詳解

2021-08-21 21:36:26 字數 1541 閱讀 8019

內部類:成員內部類(非靜態的)、區域性內部類、匿名內部類、靜態內部類。

員內部類:

作為外部類的成員存在,與成員變數和成員方法平級關係

宣告:public class out{

//成員變數

//成員方法

//成員內部類

訪問許可權 class in{

//成員變數

//成員方法

語法說明:

成員內部類的訪問許可權:任意的

思考如何建立成員內部類的物件?

由於成員內部類作為外部類的成員存,若想訪問類成員需要通過物件,所以成員內部類物件需要通過外部類 物件建立

語法://建立外部類物件

out o = new out();

//通過外部類找到內部類,通過外部類物件建立內部類物件

out.in i = o.new in();

如何在成員內部類中訪問外部類的成員?

i.當外部類的屬性和內部類屬性不同名時,可以直接訪問

ii.當外部類屬性與內部類屬性同時時,格式:

外部類名.this.屬性名

通過以上格式在內部類中訪問外部類的同名屬性

區域性內部類:

作為區域性成員存在,和區域性變數平級。區域性內部類的訪問許可權:只能是預設

宣告:public class outer{

//成員變數

//成員方法

//區域性內部類所在的方法

public void fun(){

//功能**

//區域性內部類

訪問許可權 class inner{

//區域性內部類的成員變數

//區域性內部類的成員方法

思考:如何建立區域性內部類物件?

直接在區域性內部類所在的方法中建立物件並呼叫方法

如何在區域性內部類中訪問外部類的屬性?

i.不同名,直接訪問

ii.同名,外部類名.this.屬性名

靜態內部類:

static關鍵字用法:修飾成員變數,成員方法,**塊

static關鍵字的第四個用法,修飾內部類(有要求的)

static修飾的內部類是靜態內部類

static只能修飾類成員

static只能修飾成員內部類

使用static修飾的成員內部類是靜態內部

1.3.1 宣告:

public class out{

訪問許可權 static class in{

匿名內部類:沒有名字的內部類前提是在靜態內部類中

原理產生原因:

由於介面和抽象類不能建立物件,若乙個介面的實現類只需要使用一次,或乙個抽象類的非抽象類只需要使用一次,可以使用匿名內部類,匿名內部類只能建立乙個物件

匿名內部類的注意事項:

匿名內部類中必須把抽象方法全部實現

匿名內部類中可以宣告獨有的屬性和方法,但是由於介面引用不能訪問實現類中獨有的屬性和方法,所以一般不在匿名內部類中宣告獨有的方法

匿名物件:若在匿名內部類中宣告了獨有的方法火屬性,可以使用匿名物件訪問,匿名物件只能使用一次

java內部類詳解

成員內部類 作為外部類的乙個成員存在,與外部類的屬性 方法並列。成員內部類中,不能定義靜態成員 成員內部類中,可以訪問外部類的所有成員 在內部類中訪問內部類自己的變數直接用變數名 在內部類中訪問內部類自己的變數也可以用this.變數名 在內部類中訪問外部類中與內部類同名的例項變數用外部類名.this...

java內部類詳解

內部類是一種類的結構擴充,讓乙個類的內部除了屬性與方法之外還可以存在有其它類的結構,並且內部類也可以定義在方法或 塊中,但是從開發的角度來講,要盡量避免使用內部類,優先考慮普通類。乙個內部類的例子 class outer public void fun public class testdemo 那...

java基礎 內部類

一 內部類 將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類,巢狀類 非static內部類可以直接訪問外部類中的成員,包括私有成員。原因 因為內部類中持有了乙個外部類的引用,引用的格式為 外部類名.this 非靜態內部類不能定義static成員 1 內部類定義在外部類的成員位置上 方法...