首頁 >Java >java教程 >Java中抽象類別可以實例化嗎?

Java中抽象類別可以實例化嗎?

DDD
DDD原創
2024-12-24 15:57:18294瀏覽

Can Abstract Classes Be Instantiated in Java?

我們可以實例化一個抽象類別嗎?

在一次面試中,有人問你是否可以實例化一個抽象類別。傳統上,你會回答「不」。然而,令你驚訝的是,面試官說這是可能的。

為了示範這一點,請考慮以下程式碼:

abstract class my {
    public void mymethod() {
        System.out.print("Abstract");
    }
}

class poly {
    public static void main(String a[]) {
        my m = new my() {};
        m.mymethod();
    }
}

儘管 my 上有抽象修飾符,但您可以使用下列指令建立它的實例一個匿名子類別。您實質上是動態建立一個子類,並將其引用指派給抽象類別參考 m。

根據Java 語言規格(JLS):

「如果類別實例建立表達式以類別結尾,那麼
被實例化的類別是匿名類別。」

所以,在這種情況下,被實例化的類別不是匿名類別。 my,但是一個匿名子類別。

可以透過編譯程式碼並檢查產生的類別檔案來確認此行為。您會注意到一個名為 Poly$1.class 的新類別文件,它對應於執行階段建立的匿名子類別。

因此,雖然您無法直接實例化抽象類,但可以透過建立匿名子類別。

以上是Java中抽象類別可以實例化嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn