在 Java 8 及更高版本中,靜態方法是允許在介面中使用。以前的版本並非如此,這讓許多程式設計師想知道為什麼。
Java 8 引入了靜態介面方法以及重寫具有預設實作的可用實例方法。介面現在可以包含靜態方法,但仍然不能有實例欄位。
靜態方法不能被重寫,因為它們在編譯時解析。這意味著編譯器可以確定要呼叫的確切類別和方法,而無需諮詢物件實例。實例方法的動態調度是必要的,因為編譯器無法在執行時間確定物件的精確類型。
與實例方法相反,靜態方法直接與類別關聯。這消除了動態分派的需要,因為編譯器已經知道所需的類別和方法。因此,重寫靜態方法是不必要且不切實際的。
可以在不使用介面的情況下為 IXMLized 實作強制執行強制工廠方法。使用工廠方法的程式碼可以明確指定具體類型,從而允許編譯器驗證合規性。
如果建立了一個不帶「建構子」的 IXMLized 實作並將其傳遞給需要它的程式碼,則該程式碼仍然將其視為有效的 IXMLable。這是因為構造是實作細節,而不是介面的一部分。任何單獨與介面互動的程式碼都不受影響。
以上是為什麼 Java 8 之前的 Java 介面不允許使用靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!