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設計模式:工廠模式
導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面我們來看看工廠模式,希望對大家有所幫助。工廠設計模式★場景和問題面向接口編程是java編程中的大家所...
-
Javascript和Java語言間的異同比較
雖然Javascript與Java有緊密的聯繫,但卻是兩個公司開發的不同的兩個產品。那麼js和java有什麼關係,兩種語言的不同點是什麼呢?以下是本站小編搜索整理的關於Javascript和Java語言間的異同比較,供參考學習,感興趣的小夥伴們可以參考一下!想了解更多相關信息請持續關...
-
java語言的接口與繼承
Java是一個面向對象的語言。對程序員來説,這意味着要注意應中的數據和操縱數據的方法,而不是嚴格地用過程來思考。下面是小編分享的java語言的接口與繼承,一起來看一下吧。大多數人認為,接口的意義在於頂替多重繼承。眾所周知Java沒有c++那樣多重繼承的機制,但是卻...
-
全面理解java中的異常處理機制精選
一、java異常總結:異常就是程序運行時出現不正常運行情況1.異常由來:通過java的類的形式對現實事物中問題的描述,並封住成了對象其實就是java對不正常情況描述後的對象體現2.對於問題的劃分有兩種:一種是嚴重的問題,一種是非嚴重的問題對於嚴重的,java通過Error類來...