介面變數:設計為靜態和最終
Java 介面在定義要實現的類別的合約義務方法方面起著至關重要的作用。除了方法宣告之外,介面還支援變數。有趣的是,這些變數表現出一個獨特的特徵:預設情況下它們都是靜態的和最終的。了解這種設計選擇背後的基本原理對於有效的 Java 程式設計至關重要。
為什麼是靜態?
Java 中的靜態修飾符表示與類別本身關聯的變量,而不是與類別本身關聯的變數。單獨的類別實例。當應用於介面變數時,靜態可確保它們在實作該介面的所有類別之間共用。這是有道理的,因為介面變數旨在表示適用於實作該介面的類別的所有實例的通用屬性。
例如,考慮一個介面 IShape,它定義了表示幾何常數(如 PI)的變數。無論具體的形狀實現如何,這些變數都應保持相同的值。使它們靜態可以確保這種行為。
為什麼是 Final?
Final 修飾符使變數不可變,初始化後禁止重新分配。此特徵與介面變數的性質一致。它們旨在表示作為介面契約一部分的常數值。在類別實作中修改介面變數將違反預期行為並可能導致錯誤。
例如,如果 IShape 有一個變數 MAX_VERTICES,在類別實作中設定其值將打破固定最大值的假設所有形狀的頂點數。最終性可以防止這種不一致。
事實來源
Philip Shaw 的 Java 介面設計常見問題解答中進一步闡明了靜態和最終介面變數的基本原理。他指出介面變數是靜態的,以適應介面不能直接實例化的事實。因此,它們的值必須在靜態上下文中分配。 Final 修飾符確保這些值保持不可變,從而保持介面契約的完整性。
以上是為什麼 Java 介面變數都是靜態變數和最終變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!