匿名類與其他類的不同就在于匿名,也就是沒有名稱。
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");
}
});
}
}