成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

java - 怎樣才算是一個(gè)內(nèi)部類

瀏覽:183日期:2024-02-08 11:29:39

問題描述

請(qǐng)問下怎樣才算是一個(gè)內(nèi)部類,最近在看android的Handler方面的東西,有點(diǎn)被搞暈了,一般情況下的內(nèi)部類我是明白的,但是為什么Handler也算是Activity的一個(gè)內(nèi)部類。

public class MainActivity extends Activity{ private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) { super.handleMessage(msg);} }; }

Handler并已經(jīng)是一個(gè)被定義好的類,只不過在使用的時(shí)候一般回去重寫其中的handleMessage方法,這樣就算是一個(gè)內(nèi)部類了嗎?這里主要是想請(qǐng)問下:

內(nèi)部類的定義是什么?

編譯器是怎么去判斷一個(gè)類是內(nèi)部類的

問題解答

回答1:

如果說一般的內(nèi)部類你知道,那這個(gè)內(nèi)部類你應(yīng)該知道才是,因?yàn)樗亲罨镜摹?/p>

按照 Java 語言的官方定義,內(nèi)部類是這樣定義的:

A nested class is a member of its enclosing class.

如果一個(gè)類是另一個(gè)類的成員,那就是內(nèi)部類。內(nèi)部類又分為靜態(tài)內(nèi)部類非靜態(tài)內(nèi)部類

上述的 handler 是一個(gè)非靜態(tài)內(nèi)部類。與靜態(tài)內(nèi)部類不同的是,要初始化這樣的內(nèi)部類的實(shí)例,必須先有它的外部類的一個(gè)實(shí)例。在這樣的非靜態(tài)內(nèi)部類中,你可以通過MainActivity.this引用到外部類的實(shí)例。而靜態(tài)內(nèi)部類是不可以的。

編譯器只要識(shí)別到一個(gè)類是定義在另一個(gè)類的內(nèi)部,就能知道它是內(nèi)部類。

回答2:

這個(gè)叫匿名內(nèi)部類

標(biāo)簽: java
相關(guān)文章: