天天看點

Java 匿名類的了解

匿名類與其他類的不同就在于匿名,也就是沒有名稱。

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");
            }
        });
    }
}