# 列舉(enum) 在開發過程中,常常會有需要輸入特定數值的狀況,比如輸入方向、月份、星期、顏色……等來完成某些特定的函式,而列舉(enum)就是將這些需要輸入的常數(*如方向中的上、下、左、右*)集中管理的方法。 使用enum語法時,實際上是讓開發者**建立一個繼承自Enum類別的類別**,而列舉中的每一個**元素**都是該創建類別的子類別。在enum中,可以新增**一般方法**、**抽象方法**、**靜態方法**及**建構子**,具體詳見下方範例程式: ```java= public class Main { public static void main(String[] args) { MonkeySong.getSlogan(); for (int i = 0; i < MonkeySong.values().length; i++) { System.out.println(MonkeySong.values()[i].getLyrics()); } } public enum MonkeySong { //每一個元素在程式開始時會變成 public static final,生命週期與程式相同 MONDAY("星期一") { //Monday為繼承自MonkeySong的子類別,具體實現抽象方法的內容 @Override public String getMonkeyAction() { return "猴子穿新衣"; } }, //每一項元素以逗號作區隔 TUESDAY("星期二") { @Override public String getMonkeyAction() { return "猴子肚子餓"; } }, WEDNESDAY("星期三") { @Override public String getMonkeyAction() { return "猴子去爬山"; } }; //若元素後面要接屬性或方法,最後一項元素必須用分號作區隔 private final String name; //定義屬性 MonkeySong(String name) { //建構子 this.name = name; } public String getName() { //一般類別中常用的getter return name; } public abstract String getMonkeyAction(); //宣告MonkeySong中必須有一個抽象方法 public String getLyrics() { //一般方法 return getName() + " " + getMonkeyAction(); } public static void getSlogan(){ //靜態方法 System.out.println("大家一起唱兒歌"); } } } /* 輸出結果: 大家一起唱兒歌 星期一 猴子穿新衣 星期二 猴子肚子餓 星期三 猴子去爬山 */ ``` ## 列舉中常用的方法 - values() : 可以將enum中的元素以陣列形式回傳 - name() : 返回enum中特定元素的名稱 - ordinal() : 返回enum中特定元素在該列舉中的位置(從0開始) ### 補充說明: 1. Enum類別本身是一個特殊類別,一般類別無法直接繼承自Enum類別(extends Enum),會被編譯器拒絕(*Classes cannot directly extend 'java.lang.Enum'*) 2. Enum不可以被繼承,但可以實現介面
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up