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


上面代碼的抽象類改成接口同樣適用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章