Java 中的靜態方法繼承
在Java 中,「Java™ SCJP 認證程式設計人員指南」中概述的繼承規則適用例如方法。可存取的實例方法由子類別繼承。然而,本書的解釋並沒有考慮靜態方法在繼承中的獨特行為。
靜態方法,顧名思義,屬於類別而不是實例。它們可以透過類別名稱訪問,無論哪個子類別正在存取它們。此特性導致實例方法偏離標準繼承規則。
當子類別從其超類別繼承靜態方法時,它不會取代或覆寫該方法。相反,原始靜態方法在子類別中仍然可以存取。這與實例方法相反,實例方法可能會發生重寫。造成這種差異的原因是靜態方法與整個類別相關聯,而不是與單一實例相關聯。
在提供的範例程式碼中,類別 B 可以存取其超類別 A 的 display() 靜態方法,使用簡單名稱 display() 或完全限定名稱 B.display()。這兩種方法都是有效的,因為靜態方法被繼承並成為類別 B 自己的方法集的一部分。
值得注意的是,在 Sun Java 教程中,明確指出子類別繼承其所有公共和受保護成員父級,包括靜態(類別)方法。繼承的靜態方法和非靜態方法之間的差異在於它們在子類別中定義具有相同簽名的新方法時的行為。雖然可以重寫非靜態方法,但靜態方法是隱藏的。這意味著從子類別內部呼叫時,子類別中的新靜態方法將優先,但從超類別呼叫時,原始靜態方法仍然可存取。
以上是Java 中靜態方法繼承與實例方法繼承有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!