1、為什麼要出現列舉:
在現實生活中,有許多實體有且僅有特定的幾個屬性
(例如:月份只有1~12月,性別只有男女,季節只有四季……等)
若將其型別定義成常量,則不可避免地出現非法引數的問題
(例如:13月,第三個性別,第五個季節……等)
因此,對於上述型別的物件,必須規定其特定的屬性值為列舉型別,即:僅能從已有的幾個值中挑選,不可以自己建立新的屬性值
2、列舉的關鍵概念:
使用者若想要建立某個物件 則
只能從已有的該型別物件裡面
挑選 而
不能自己
自由建立
新的該型別物件
例如:使用者若想要乙個季節型別的物件
則只能從已有的春夏秋冬四個型別的物件裡挑選
而不能建立新的季節型別物件
*列舉類的原始實現:
(1)定義乙個類,裡面包含若干個public static final修飾的,自身型別的變數以供外界使用
(2)構造方法私有(即:不可以由外界建立新的物件)
例如:class season() }
*這樣,外界只要把乙個變數定義成season類
那麼這個變數除了取春夏秋冬中任乙個值外,不能取任何其它值
3、列舉類在jdk5.0中的實現:
enum season()
此語法與上述原始實現的作用完全等同,且同樣是
編譯器語法,即:
編譯器在遇到上述語句的時候,會自動將其轉換成之前原始實現的格式
*因此,列舉在本質上仍然是乙個特殊的類,只不過這個類:
(1)內部包含該類的公開靜態常量物件
(2)構造方法必須是私有的
4、列舉類的父類:enum
常用方法:
values() //靜態方法,返回該列舉類的陣列,內容為該類中所有的列舉值
5、列舉類作為乙個特殊的類的理解:
列舉除了可以定義該類的公開靜態常量物件之外
還可以定義任何另外的屬性和方法,
只是在新增屬性和方法的時候,需要
在列舉值的最後乙個值後面加上分號
例如:enum season() //
注意:列舉類的構造方法僅能是private的,即使不用private修飾,也會自動預設為private
public string getname() }
6、列舉類不可以有子類,但是列舉類中的列舉值可以實現列舉類中的抽象方法
例如://定義列舉型別
enum operator },
sub
},
mul
},
div
};
public abstract double calculate(double a, double b); }
//呼叫該列舉類
operator os = operator.values();
for(operator o:os)
Java高新技術 列舉
說明 當乙個類的物件個數固定,且不需要再建立這個類新的物件時,可以考慮用列舉。一,列舉原理 列舉型別特有 1.私有構造方法 2.每個元素分別用乙個公有的靜態成員變數表示 3.可以有若干個公有方法或抽象方法,抽象方法可以使每個元素 本類物件 通過覆蓋具有自己獨特的內容 注 列舉型別的元素就是本類物件,...
JAVA高新技術 泛型篇
1 泛型的意義 往小處說,是為了實現型別安全的集合 往大處說,是為了實現模版程式設計的理念 2 為什麼要出現泛型 雖然集合具有長度可擴充 插入刪除方便等強大的特性 但是集合內部可以儲存的物件是型別不安全的 釋義 什麼是型別不安全 因為集合內部可以裝入 取出的元素是object型別 因此任何物件都能夠...
高新的技術對不對 有關高新技術
有關高新技術 一 高新技術的含義 高新科學技術,也叫高技術 高科技。年 高技術 一詞被收入美國出版的 韋氏第 三版國際詞典補充 個詞 中,由此作為乙個正式名詞固定下來。一般而言,它的含義 是動態變化的,是不斷發展的乙個概念。從地域上看,不同的國家對高技術有不同的理解。被稱為南韓 經濟起飛 科技發展之...