首頁 >Java >java教程 >為什麼 Java 8 之前的 Java 介面不能有靜態方法?

為什麼 Java 8 之前的 Java 介面不能有靜態方法?

Patricia Arquette
Patricia Arquette原創
2024-12-14 08:37:10797瀏覽

Why Couldn't Java Interfaces Have Static Methods Before Java 8?

為什麼 Java 介面不允許靜態方法

Java 8 升級

從 Java 8 開始,介面現在支援靜態方法。此外,它們可以有具體的實例方法,但不能有實例欄位。

歷史和技術原因

在早期的Java 版本中,由於以下原因,介面不能包含靜態方法:

  • 技術可行性:最初考慮的是一個小的語言更改,在Java 7 中向介面添加靜態方法的提議遇到了不可預見的複雜情況。
  • 冗餘:介面中的靜態方法並不是非常必要的,因為呼叫靜態方法需要一個類,而該類在編譯時是靜態已知的。

靜態方法與重寫

靜態方法不能被重寫,因為它們是在編譯時解析的。當編譯器無法確定物件的具體類型並因此無法解析要呼叫的方法時,動態分派用於實例方法。但是,由於靜態方法需要已知的類,因此可以靜態解析它們,從而無需動態調度。

換句話說,如果超類別和子類別都具有具有相同簽名的靜態方法,則子類別的方法將始終首先調用,並覆蓋超類別的方法。然而,這在概念上是多餘的,因為人們總是可以指定包含所需版本的靜態方法的類別。

建構子「介面」

關於強制執行類似建構子的方法的額外擔憂IXMLable,請考慮以下事項:

  • 具體類型的明確命名確保可以在編譯時驗證建構子
  • IXMLabilized 定義了預期的介面行為,額外的建構要求是實作細節。
  • 使用介面的程式碼不需要了解建構函數,而需要建構函數的程式碼必須知道無論如何,具體型別。

以上是為什麼 Java 8 之前的 Java 介面不能有靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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