概念:
匿名內部類也就是沒有名字的內部類
正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化**編寫
但使用匿名內部類還有個前提條件:必須繼承乙個父類或實現乙個介面
注意事項:
&編譯後的檔案命名:外部類$數字
. class &
無法使用
public
、private
、abstract
、static
修飾,匿名內部類不能出現抽象方法 &
無法編寫構造方法,但可以新增構造**塊 &
不能出現靜態成員 &
匿名內部類可實現介面也可以繼承類,但是不可兼得 &
匿名內部類不能是抽象的,它必須要實現繼承的類或者實現介面的所有抽象方法
匿名內部類初始化:
我們一般都是利用構造器來完成某個例項的初始化工作的,但是匿名內部類是沒有構造
器的,那怎麼來初始化匿名內部類呢?使用構造**塊!利用構造**塊能夠達到為匿名內
部類建立乙個構造器的效果。
例項:
例項:
繼承式的匿名內部類:
引用變數不是引用
car
物件,而是
car
匿名子類的物件。
建立匿名內部類的關鍵點是重寫父類的乙個或多個方法。再強調一下,是重寫父類的方
法,而不是建立新的方法。因為用父類的引用不可能呼叫父類本身沒有的方法,建立新的方
法是多餘的。
介面式的匿名內部類:
上面的**很怪,好像是在例項化乙個介面。事實並非如此,介面式的匿名內部類是實
現了乙個介面的匿名類。而且只能實現乙個介面。
引數式的匿名內部類
由上面的三個例子可以看出,只要乙個類是抽象的或是乙個藉口,那麼其子類中的方法
都可以使用匿名內部類來實現。最常用的情況就是在多執行緒的實現上,因為要實現多執行緒必
須繼承thread
類或是實現
runnable 介面
thread類的匿名內部類實現:
runnable介面的匿名內部類實現:
匿名內部類初始化
JAVA匿名內部類
abstract class base public abstract void f public class anonymousconstructor public void f public static void main string args 在此例中,不要求變數i 一定是final 的。...
Java 匿名內部類
內部類定義在區域性時,1,不可以被成員修飾符修飾 2,可以直接訪問外部類中的成員,因為還持有外部類中的引用。但是不可以訪問它所在的區域性中的變數。只能訪問被final修飾的區域性變數。非靜態,沒物件,不執行 class outer new inner function class innerclas...
java匿名內部類
匿名內部類 匿名內部類 1 匿名內部類即沒有名字的內部類 2 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化 編寫 3 但使用匿名內部類還有個前提條件 必須繼承乙個父類或實現乙個介面 示例1 不使用匿名內部類來實現抽象方法 abstract class people class chil...