匿名類與其他類的不同就在於匿名,也就是沒有名稱。
Java中允許創建子類對象時,除了使用父類的構造方法外,還可以用類體。
匿名類就是一個沒有類申明的類體,因爲沒有名稱,所有匿名類不可以申明對象,但卻可以創建對象。
例如A是一個子類,那麼下面的代碼就是A的一個子類(匿名類)創建對象
new A(){ 匿名類的類體 };
由於匿名類是一個子類,所以和有一般子類的特徵。可以繼承父類的方法,同樣也可以重寫父類的方法。值得提醒的是,在使用匿名類時,一定是在某個類中直接用匿名類創建對象,因此匿名類必定是內部類,所以和其他匿名類一樣可以訪問外嵌類中的成員變量和方法,匿名類的類體中不可以什麼static成員變量和static方法。
儘管匿名類沒有申明的步驟,但可以在創建匿名對象時返回一個引用賦值給匹配參數。
匿名類的常用方式是向方法的參數傳值。
具體方法如下:
abstract class Speak{ public abstract void speakHello(); } class Student{ void f(Speak sp){ sp.speakHello(); } } public class AnonymousClassDemo { public static void main(String[] args) { Speak speak = new Speak(){ public void speakHello(){ System.out.println("大家好,祝工作愉快!"); } }; speak.speakHello(); Student st = new Student(); st.f(new Speak(){ public void speakHello(){ System.out.println("I am a student, how are you"); } }); } }
上面代碼的抽象類改成接口同樣適用。