糯米文學吧

位置:首頁 > 計算機 > java語言

Java為什麼要枚舉

java語言3.19W

導語:每個元素分別用一個公有的靜態成員變量表示,再組合成類,下面是關於Java語言枚舉的原因,歡迎參考!

Java為什麼要枚舉

問題:要定義星期幾或性別的變量,該怎麼定義?假設用1-7分別表示星期一到星期日,

但有人可能會寫成int weekday = 0;或即使使用常量方式也無法阻止意外。

枚舉就是要讓某個類型的變量的取值只能為若干個固定值中的一個,否則,編譯器就會報錯。

枚舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,

普通變量的方式在開發階段無法實現這一目標。

**用普通類如何實現枚舉的功能?定義一個Weekday類來模擬實現:

  步驟:

*私有化構造方法

*每個元素分別用一個公有的靜態成員變量表示(public static final)

*可以有若干公有方法或抽象方法。採用抽象方法定義nextDay就將大量的語句

轉移成了一個個獨立的類。

  **枚舉的應用:

舉例:定義一個Weekday的枚舉。

擴展:枚舉類的values,valueOf,name,toString,ordinal等方法

(記住,講課時要先於自定義方法前介紹,講課更流暢)

總結:枚舉是一種特殊的類,其中的'每個元素都是該類的一個實例對象。

例如可以調用lass()ame和ame()。

  **枚舉的高級應用:

**枚舉就相當於一個類,其中也可以定義構造方法、成員變量、普通方法和抽象方法。

**枚舉元素必須位於枚舉體中的最開始部分,枚舉元素列表的後要有分號與其他成員分隔。

把枚舉中的成員方法或變量等放在枚舉元素的前面,編譯器報告錯誤。

  **帶構造方法的枚舉

構造方法必須定義成私有的

如果有多個構造方法,該如何選擇哪個構造方法?

枚舉元素MON和MON()的效果一樣,都是調用默認的構造方法。

  **帶方法的枚舉

定義枚舉TrafficLamp

實現普通的next方法

實現抽象的next方法:每個元素分別是由枚舉類的子類來生成的實例對象,

這些子類採用類似內部類的方式進行定義。增加上表示時間的構造方法

**枚舉只有一個成員時,就可以作為一種單例的實現方式。

標籤:JAVA 枚舉