匿名內部類通常用於簡化**的編寫,
使用匿名內部類還有個前提條件:必須繼承乙個父類或實現乙個介面
之前對於new了乙個介面或者抽象類不是很理解,
現在知道:
因為沒有名字,也就沒有建構函式,
所以只能通過顯示呼叫父類函式建立匿名內部類。
還有關於匿名內部類使用外部類變數作為形參傳入時需要用final修飾,
在網上看了許多網友的理解,各有其說法,但關鍵我的
理解是在於final是為了保證變數在外部類和內部類的不可變,
至於是因為機制的問題還是其他,暫不做過多追究
以及關於本文參考**nerxious的播客中
「匿名內部類只能例項化一次」的說法不是很理解
匿名內部類的產生:如果不使用匿名內部類來實現抽象方法,需要單獨寫乙個類向上轉型實現抽象方法,比較麻煩
例子:
執行結果:eat something
這裡就為了實現抽象類裡的抽象方法而專門寫了乙個child類。
為了簡化**書寫,可以使用匿名內部類
例子:
執行結果:eat something
我們直接將抽象類person中的方法在大括號中實現了
這樣便可以省略乙個類的書寫
並且,匿名內部類還能用於介面上,只要乙個類是抽象的或是乙個介面,那麼其子類中的方法都可以使用匿名內部類來實現
執行結果:eat something
最常用的情況就是在多執行緒的實現上,因為要實現多執行緒必須繼承thread類或是繼承runnable介面
thread類的匿名內部類實現
例子:
執行結果:1 2 3 4 5
runnable介面的匿名內部類實現
例子:
執行結果:1 2 3 4 5
內部類 匿名內部類的使用
內部類的使用 classouter classinner public voidget a a public voidtest this.get newa public voidfun1 system.out println i public classtest public static void...
匿名內部類的使用
使用匿名內部類可以少些乙個對介面的實現類 1.建立乙個介面 public inte ce myinte ce 2.使用匿名內部類 匿名內部類的定義格式 介面名稱 物件名 new 介面名稱 public static void main string args obj.method 3.執行結果 匿名...
匿名內部類的使用
匿名內部類適合那種只需要使用一次的類 注意 1.匿名內部類沒有訪問修飾符 2.匿名內部類沒有構造方法。因為它連名字都沒有那又何來構造方法呢。package cn.txt.integer 測試匿名內部類 適合那種只需要使用一次的類 author administration public class ...