慕碼人8056858
2019-02-22 04:36:06
請問下怎樣才算是一個內(nèi)部類,最近在看android的Handler方面的東西,有點(diǎn)被搞暈了,一般情況下的內(nèi)部類我是明白的,但是為什么Handler也算是Activity的一個內(nèi)部類。
public class MainActivity extends Activity{
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
}
Handler并已經(jīng)是一個被定義好的類,只不過在使用的時(shí)候一般回去重寫其中的handleMessage方法,這樣就算是一個內(nèi)部類了嗎?這里主要是想請問下:
內(nèi)部類的定義是什么?
編譯器是怎么去判斷一個類是內(nèi)部類的
2 回答

慕運(yùn)維8079593
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊
如果說一般的內(nèi)部類你知道,那這個內(nèi)部類你應(yīng)該知道才是,因?yàn)樗亲罨镜摹?/p>
按照 Java 語言的官方定義,內(nèi)部類是這樣定義的:
A nested class is a member of its enclosing class.
如果一個類是另一個類的成員,那就是內(nèi)部類。
內(nèi)部類又分為靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類
上述的 handler 是一個非靜態(tài)內(nèi)部類。與靜態(tài)內(nèi)部類不同的是,要初始化這樣的內(nèi)部類的實(shí)例,必須先有它的外部類的一個實(shí)例。
在這樣的非靜態(tài)內(nèi)部類中,你可以通過MainActivity.this
引用到外部類的實(shí)例。而靜態(tài)內(nèi)部類是不可以的。
編譯器只要識別到一個類是定義在另一個類的內(nèi)部,就能知道它是內(nèi)部類。
添加回答
舉報(bào)
0/150
提交
取消