package com.michael.jdk15;
/*
* jdk1.5新特性之 -- 枚舉
* 使用:某些方法的接收的數(shù)據(jù)必須是固定范圍內的,比如星期裸弦、性別掌腰、方向、季節(jié)等焕参,這時候解決方案就是自定義一個類
* 然后私有化構造函數(shù)轻纪,在自定義類中構造本類的對象。
*
* 解決方法二:
* 枚舉類:
* 1. 枚舉類也是一個特殊的類;
* 2. 枚舉值默認的修飾符是public static final
* 3. 枚舉值是枚舉值所屬的類的數(shù)據(jù)類型叠纷。
* 4. 枚舉類的構造方法修飾符默認是private
* 5. 枚舉類可以定義自己的成員變量和函數(shù);
* 6. 枚舉類可以定義構造函數(shù)刻帚,但是修飾符必須是private
* 7. 枚舉類可以存在抽象的方法,但是枚舉值必須實現(xiàn)抽象的方法:
* 8. 枚舉值必須要位于枚舉位于枚舉類的第一個值:
*
* Switch使用的數(shù)據(jù)類型:byte/char/short/int/String/枚舉類型
* 注意:在case語句中的枚舉值不需要聲明值屬于那個枚舉類的
*
*/
class Gender{
String value;
String name;
private Gender sex;
private Gender(String value){
this.value = value;
}
public static final Gender man = new Gender("男");
public static final Gender woman = new Gender("女");
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public Gender getSex(){
return sex;
}
public void setSex(Gender sex){
this.sex = sex;
}
}
enum Sex{
man("男"){
public void run(){
System.out.println("男人在跑");
}
},woman("女"){
public void run(){
System.out.println("女人在跑");
}
};//枚舉類型
//相當于:public static final Sex man = new Sex();
// public static final Sex woman = new Sex();
String value;
private Sex(String value){
this.value = value;
}
public String getValue(){
return this.value;
}
abstract public void run();
}
enum Season{
spring,summer,autumn,winter;
}
public class Demo5 {
public static void main(String[] args){
Sex sex = Sex.man;
sex.run();
sex = Sex.woman;
sex.run();
Season season = Season.spring;
switch(season){
case spring:
System.out.println("春天");
break;
case summer:
System.out.println("夏天");
break;
case autumn:
System.out.println("秋天");
break;
case winter:
System.out.println("冬天");
break;
}
}
}