【Java】列舉
阿新 • • 發佈:2020-09-08
列舉
列舉:Enum子類,final修飾 自jdk5.0
常用方法:
values(); 獲取列舉類內的所有列舉值,返回當前列舉類型別的陣列
name(); 獲取列舉值(列舉類的物件)的名字
ordinal();獲取列舉值的序號
列舉語法:
①在最最後的列舉值後加分號,然後定義屬性、方法、構造方法
②列舉的構造方法,必須為私有,預設也是私有
③列舉內的抽象方法,該方法必須由每個列舉值來實現(可用內部類實現)
1).建立列舉類
①:是個類,並且這個類的物件是構造好的,不允許使用者構造該類的新物件 常用方法: values(); 獲取列舉類內的所有列舉值,返回當前列舉類型別的陣列 name(); 獲取列舉值(列舉類的物件)的名字 ordinal();獲取列舉值的序號 用法: //enum 繼承自Enum enum Season { //建立列舉類Season SPRING , SUMMER , AUTUMN ,WINTER } main: Season s = Season.SUMMER; System.out.println(s.name());//列印s物件的名稱 System.out.println(s.ordinal());//列印s物件所在的序號 //遍歷列舉類內的列舉值 Season[] arrSeason = Season.values(); for(Season ss : arrSeason) { System.out.println(ss.name()); }
2).列舉類的構造方法
②:是個特殊的類,是Enum的子類,它所有的構造方法是私有的(private,不能被子類繼承的特性),可以有屬性,一旦有有參構造,則需要其內部的列舉值(列舉物件)也需要構造 用法: //enum 繼承自Enum enum Season { SPRING("春季", 1, 3), SUMMER("夏季", 4, 6), AUTUMN("秋季", 7, 9), WINTER("冬季", 10, 12); //構造後,最後一個物件需要有“;” String name; private int startMonth; private int endMonth; //省略getters/setters Season(String name, int startMonth, int endMonth) {//構造方法,預設private this.name= name; this.startMonth = startMonth; this.endMonth = endMonth; } } main(): Season s = Season.SUMMER; System.out.println(s.getName() + “開始月份是” + s.getStartMonth());
3).列舉類的抽象方法
③:列舉類的內部可以有抽象方法。列舉類的本身是被final修飾的,不能被繼承,故不存在子類實現其抽象方法。 所以其抽象方法是供內部的列舉值(列舉物件)實現的 用法: //enum 繼承自Enum enum Season { SPRING("春季", 1, 3) { @Override //覆蓋抽象方法 public void describe() { System.out.println("春燕銜春泥"); } }, SUMMER("夏季", 4, 6) { @Override //覆蓋抽象方法 public void describe() { System.out.println("夏天很炎熱"); } }, AUTUMN("秋季", 7, 9) { @Override //覆蓋抽象方法 public void describe() { System.out.println("秋天落葉黃"); } }, WINTER("冬季", 10, 12) { @Override //覆蓋抽象方法 public void describe() { System.out.println("大雪深數尺"); } }; String name; private int startMonth; private int endMonth; //省略getters/setters Season(String name, int startMonth, int endMonth) {//構造方法,預設private this.name= name; this.startMonth = startMonth; this.endMonth = endMonth; } public abstract void describe();//一個方法實現描述 } main(): Season s = Season.SUMMER; s.describe ();