Java面試題-匿名內部類詳解
阿新 • • 發佈:2018-12-26
前言
匿名內部類應該是屬於java基礎的知識點,後來我們在開發中使用的也不算很少了,只是我們可能沒太注意自己所建立的或者使用的一些類就是匿名內部類,我看了排名很靠前的一些關於匿名內部類的一些 部落格講解的都很棒,只可惜跳躍的很大導致很多人不多看幾次很難理解,我來把複雜簡單化,如果有失誤的大家一起來糾正!
匿名內部類
首先我們不妨把匿名內部類拆成“匿名”和“內部類”,在學Java過程中大家應該聽說過匿名物件,匿名物件就是物件的簡寫格式,內部類就不用說了類裡面又寫一個類,如果您對內部類不是很清楚可以看看內部類相關的基礎知識。
以上所述匿名內部類可以說成是內部類的簡寫格式。匿名內部類的前提
內部類必須繼承或者實現一個外部類或者一個介面,
不妨看看下面的程式碼,這是正常的內部類
class Outer
{
int num = 4;
//這是內部類
class Inner
{
void show()
{
System.out.println("show...."+num);
}
}
public void method()
{
Inner in = new Inner();
in.show();
//等價於上面的呼叫
//new Inner().show();
}
}
下面我們嘗試讓它變成匿名類,注意前提:必須實現一個介面或外部類
abstract class Demo
{
abstract void show();
}
class Outer
{
int num = 4;
//這是內部類
/*class Inner
{
void show()
{
System.out.println("show...."+num);
}
}
*/
public void method()
{
//Inner in = new Inner();
//in.show();
//等價於上面的呼叫
//new Inner().show();
//這個就是匿名內部類
new Demo()
{
void show()
{
System.out.println("show...."+num);
}
}.show();//這是繼承完複寫父類方法
}
}
- 內部類的簡寫格式
匿名內部類:其實就是一個匿名子類物件。
格式:new 父類或介面()(子類內容)
以上只是簡單的介紹匿名內部類,如何把內部類轉化成匿名內部類的一些Demo,如果讀者想進一步加以理解不妨可以看看匿名內部類的應用
點選該部落格可以進一步瞭解匿名內部類