物件導向 內部類

2021-08-10 23:02:40 字數 2492 閱讀 5110

內部類:

將乙個類定義在另乙個類的裡面,裡面那個類就成為內部類(內建類,巢狀類)。

內部類的定義原則;

當描述事物時,事物的內部還有事物,該事物用內部類來描述。(因為內部事物在使用外部事物的內容)

內部訪問特點:

1、內部類可以直接訪問外部類中的成員,包括私有成員。(因為內部類持有乙個外部類的引用,格式為:外部類.this)

2、外部類要訪問內部類中的成員必須要建立內部類的物件。

public class demo49 

}class outer

class inner

}}

執行結果為:

inner:3

直接訪問內部類中的成員。

1、當內部類定義在外部類的成員位置上,而且非私有,可以在外部其它類中。可以直接建立內部物件類

格式:

外部類名.內部類名  變數名 = 外部類物件.內部類物件;

也即是:outer.inner.in = new outer().new inner();

public class demo49 

}class outer

class inner

}}

執行結果為:

inner:3

2、當內部類在成員位置上,就可以被成員修飾符所修飾。

比如,private:將內部類在外部類中進行封裝。

static:內部類就具備static的特性。(當內部類被static修飾後,只能直接訪問外部類中的靜態成員,出現了訪問侷限。)

在外部類中,如何直接訪問靜態內部類的非靜態成員呢?

new outer.inner().function();

在外部類中,如何直接訪問靜態內部類的靜態成員呢?

outer.inner().function();

注意:1、當內部類定義了靜態成員,該內部類必須是static的。

2、當外部類中的靜態方法訪問內部類是,內部類也必須是static的。

如果分別在外部類,內部類以及內部類成員函式中都定義相同變數,比如x,則獲取方法為:

public class demo49 

}class outer

class inner

}}

輸出結果為:

inner:3  inner:6  inner:9

內部類被定義在區域性時:

1、不可以被成員修飾符修飾

2、可以直接訪問外部類中的成員,(因為還持有外部類中的引用。)但是,不可以訪問它所在的區域性中的變數。只能訪問被final修飾的區域性變數。

public class demo50 

}class outer1

} new inner1().function();

}}

執行結果為:

3

4

物件導向 內部類

在學內部類前,我自己先問了自己2個問題!1 什麼是內部類呢?簡單說 就是在乙個類中在建立乙個類。2 而為什麼又要搞這個內部類呢?我想是為了在於現實中的一些建模問題吧,讓事物更加形象。比如要建立 人體 這個類,有很多功能吧,比如 吃飯 看書 而這些功能又需要 嘴巴 眼睛 那麼我們就不得不建立 嘴巴 眼...

物件導向 內部類

asp.net android ios開發 net培訓 期待與您交流!7.1內部類 內部類 將乙個類定義在另乙個類裡面,裡面那個類就稱為內部類.格式 class outclass 注意 內部類可以定義在外部類的成員位置,也可以是在外部類的區域性位置.如 class outclass 注意 內部類可以...

物件導向 內部類

定義 將乙個類定義在另乙個類的裡面,裡面那個類就是內部類,又稱為巢狀類或者內建類。內部類生成的位元組碼檔名格式為 outerclass innerclass.class 內部類可以分成成員內部類 區域性內部類以及匿名內部類。在乙個類中使用內部類,可以在內部類中直接訪問其所在類的私有成員變數,儘管這些...