《數據結構與抽象:Java語言描述(原書第4版)》一P.3.5 接口內命名常量
本節書摘來華章計算機《數據結構與抽象:Java語言描述(原書第4版)》一書中的第1章 ,第1節,[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學 新英格蘭理工學院 辛運幃 饒一梅 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。
P.3.5 接口內命名常量
接口可以含有命名常量,即已初始化且聲明為終態變量的公有數據域。如果你想實現共享一組通用命名常量的多個類,則可以將常量定義在一個接口中,讓類來實現接口。也可以將常量定義在一個單獨的類中而不是一個接口中。本節討論這兩種方式。不管選擇哪種方式,當前都隻有一組常量可用。
假定有幾個類必須將度量轉換為公製。可以將換算因子定義為這些類可共享的常量。我們將常量放在一個接口中。
常量的接口。下列接口定義3個命名常量:
任何接口除了聲明方法外還可以定義常量,不過上麵這個接口隻含有常量。
要在一個類中使用這些常量,可以在類定義中寫implements子句。然後在整個類中可按名使用常量。例如,考慮下麵這個簡單的類:
用接口名來限定常量是可選的。但是,如果相同的命名常量定義在一個類實現的多個接口中,則在類中必須用接口名來限定常量。
常量的類。為了同樣的目的,可以不將常量定義在接口中,而是將它們定義在類中:
注意私有構造方法。因為類中提供了一個構造方法,所以Java就不提供了。因為我們的構造方法是私有的,所以客戶不能創建類的實例。
使用這個類很簡單,如下例所示:
因為常量是靜態的,所以必須在其名字前加上類的名字及一個點。這可能是一個優點,讀你程序的人立刻明白常量來自於哪裏。如果這樣做比較麻煩,則可以定義常量的一個本地副本,如
用它來替代。
設計決策:常量應該定義在接口中還是在類中?
程序員對這個問題的答案似乎是不一致的。即使在Java類庫中也含有兩種形式的例子。一般地,常量定義應該是在類中的實現細節。接口聲明方法,所以屬於規格說明範疇,而不是實現範疇。將接口僅用於方法是一個合理的準則。
最後更新:2017-06-26 14:32:21