1 枚舉的需求范圍
一些方法在運行時,它需要的數據不能是任意的,而必須是一定范圍內的值
比如: 方向 , 性別 、 季節 、 星期......
2 枚舉類的定義格式:
enum 類名{
//枚舉值
}
3 枚舉要注意的細節:
1. 枚舉類也是一個特殊的類。
將枚舉類編譯,會存在以 .class 為后綴的文件
2. 枚舉值默認的修飾符是public static final。
假如我自定義一個性別枚舉類
enum Sex{ man,woman; }
那么其中的 man 其實相當於 public static final Sex man = new Sex();
3. 枚舉值就是枚舉值所屬的類的類型,枚舉值是指向了本類的對象的。
參考2
4. 枚舉類的構造方法默認的修飾符是private的。
enum Sex{ man,woman; private Sex(){ } }
5. 枚舉類可以定義自己的成員變量與成員函數。
1 enum Sex{ 2 man,woman; 3 4 private Sex(){ 5 6 } 7 8 String value;//成員變量 9 public void getValue(){ 10 System.out.println("value: " + value); 11 } 12 }
6. 枚舉類自定義帶參構造函數時,枚舉值需要傳參。
1 enum Sex{ 2 man("男"),woman("女"); 3 4 private Sex(String value){ 5 this.value = value; 6 } 7 8 String value;//成員變量 9 public void getValue(){ 10 System.out.println("value: " + value); 11 } 12 }
7. 枚舉類可以存在抽象的方法,但是枚舉值必須要實現抽象的方法。
1 enum Sex{ 2 man("男"){ 3 4 @Override 5 public void run() { 6 System.out.println("男人再跑!"); 7 } 8 9 },woman("女"){ 10 @Override 11 public void run() { 12 System.out.println("女人再跑!"); 13 } 14 }; 15 16 public abstract void run(); 17 18 // private Sex(String value){ 19 // this.value = value; 20 // } 21 // 22 // String value;//成員變量 23 // 24 // public void getValue(){ 25 // System.out.println("value: " + value); 26 // } 27 28 }
8. 枚舉值必須要位於枚舉類的第一個語句。
注意: JDK1.5才有枚舉的哦
完整代碼
1 enum Sex{ 2 man("男"){ 3 4 @Override 5 public void run() { 6 System.out.println("男人再跑!"); 7 } 8 9 },woman("女"){ 10 @Override 11 public void run() { 12 System.out.println("女人再跑!"); 13 } 14 }; 15 16 public abstract void run(); 17 18 private Sex(String value){ 19 this.value = value; 20 } 21 22 String value;//成員變量 23 24 public void getValue(){ 25 System.out.println("value: " + value); 26 } 27 28 } 29 30 public class Demo4 { 31 public static void main(String[] args) { 32 Sex sex = Sex.man; //獲取到了枚舉類的對象 33 sex.getValue(); 34 35 sex.run(); 36 } 37 }