java - 怎樣才算是一個內(nèi)部類
問題描述
請問下怎樣才算是一個內(nèi)部類,最近在看android的Handler方面的東西,有點被搞暈了,一般情況下的內(nèi)部類我是明白的,但是為什么Handler也算是Activity的一個內(nèi)部類。
public class MainActivity extends Activity{ private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) { super.handleMessage(msg);} }; }
Handler并已經(jīng)是一個被定義好的類,只不過在使用的時候一般回去重寫其中的handleMessage方法,這樣就算是一個內(nèi)部類了嗎?這里主要是想請問下:
內(nèi)部類的定義是什么?
編譯器是怎么去判斷一個類是內(nèi)部類的
問題解答
回答1:如果說一般的內(nèi)部類你知道,那這個內(nèi)部類你應(yīng)該知道才是,因為它是最基本的。
按照 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)部類的實例,必須先有它的外部類的一個實例。在這樣的非靜態(tài)內(nèi)部類中,你可以通過MainActivity.this引用到外部類的實例。而靜態(tài)內(nèi)部類是不可以的。
編譯器只要識別到一個類是定義在另一個類的內(nèi)部,就能知道它是內(nèi)部類。
回答2:這個叫匿名內(nèi)部類
相關(guān)文章:
1. mysql - 表名稱前綴到底有啥用?2. 致命錯誤: Class ’appfacadeTest’ not found3. 老師們php,插入數(shù)據(jù)庫mysql,都是空的,要怎么解決4. 求大神支招,php怎么操作在一個html文件的<head>標(biāo)記內(nèi)添加內(nèi)容?5. php點贊一天一次怎么實現(xiàn)6. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。7. PHP類屬性聲明?8. sql語句 - 如何在mysql中批量添加用戶?9. phpstady在win10上運行10. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項
