Java 繼承中的靜態方法
儘管人們普遍認為靜態方法在Java 中不被繼承,但仍然存在一個令人費解的異常。這種混亂源自於對 Java 語言中繼承本質的誤解。
根據 Java 官方文檔,所有可存取的方法都是由子類繼承的。這包括公共、受保護和包私有方法。繼承的方法可以原樣使用、重寫、隱藏或用新方法補充。
對於靜態方法,繼承行為的差異僅在於子類別中重寫的靜態方法隱藏了繼承的方法方法而不是覆寫它。當從子類別呼叫時,將執行子類別中的隱藏方法,而不是繼承的方法。
因此,能夠存取並呼叫 B 類別中的靜態方法 display() 是因為方法與超類別的其他可存取成員一起繼承。 B.display() 看似異常的行為也有效,因為它呼叫 B 類別中隱藏的靜態方法而不是繼承的方法。
覆蓋和隱藏之間的區別具有重要意義。在重寫的情況下,子類別中的方法總是執行,無論它是從超類別還是子類別呼叫。但是,在隱藏的情況下,呼叫的方法取決於上下文。如果從超類別呼叫靜態方法,則繼承的方法將執行;否則,將執行子類別中的隱藏方法。
以上是Java 中的靜態方法真的繼承嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!