enum關(guān)鍵字定義的枚舉類實(shí)現(xiàn)接口的幾種情況
1葵擎、實(shí)現(xiàn)接口,在enum類中實(shí)現(xiàn)(重寫)抽象方法
2瞬雹、讓枚舉類的對象分別實(shí)現(xiàn)接口中的抽象方法
代碼示例:
public class seasonTest1 {
????public static void main(String[] args) {
????????Season1 summer = Season1.SUMMER;
????????System.out.println(summer);//Season{seasonName='Summer', seasonDesc='hot'}
? ? ? ? System.out.println(summer.getClass());//class com.study.lele.Season1
? ? ? ? System.out.println(summer.getSeasonDesc());//hot
????????//values()
? ? ? ? Season1[] values = Season1.values();
????????for(int i =0; i < values.length; i++){
????????????System.out.println(values[i]);//Season{seasonName='Spring', ????????????seasonDesc='warm'}...Season{seasonName='Winter', seasonDesc='cold'}
? ? ? ? ? ? values[i].show();
}
????????Thread.State[] state = Thread.State.values();
????????for(int i =0; i < values.length; i++){
????????????System.out.println(state[i]);//NEW醋粟、RUNNABLE尝偎、BLOCKED、WATING
? ? ? ? }
????????//ValueOf(String str):返回枚舉類中對象名是str的對象
? ? ? ? Season1 winter = Season1.valueOf("WINTER");//Season{seasonName='Winter', seasonDesc='cold'}
? ? ? ? System.out.println(winter);//WINTER
? ? ? ? winter.show();
????}
}
interface Info{
????????void show();
}
//使用enum定義枚舉類
//定義的枚舉類默認(rèn)繼承Enum類至壤,重寫toString后威始,就不再繼承Enum類了
enum Season1implements Info{
//1、提供當(dāng)前枚舉類的對象像街,用,間隔黎棠,最后一個用;
? ? SPRING("Spring","warm"){
//情況2:讓枚舉類的對象分別實(shí)現(xiàn)接口中的抽象方法
? ? ? ? @Override
? ? ? ? public void show() {
????????System.out.println("Spring is warm");
????}
},
????SUMMER("Summer","hot"){
//情況2:讓枚舉類的對象分別實(shí)現(xiàn)接口中的抽象方法
? ? ? ? @Override
? ? ? ? public void show() {
????????????System.out.println("You can swim in summer");
????????}
},
AUTOMN("Automn","cool"){
//情況2:讓枚舉類的對象分別實(shí)現(xiàn)接口中的抽象方法
? ? ? ? @Override
? ? ? ? public void show() {
????????????System.out.println("Austom is golden");
????}
},
WINTER("Winter","cold"){
//情況2:讓枚舉類的對象分別實(shí)現(xiàn)接口中的抽象方法
? ? ? ? @Override
? ? ? ? public void show() {
????????????System.out.println("Winter is so cold");
}
};
//2、聲明Season對象的屬性:private final來修飾
? ? private final StringseasonName;
????private final StringseasonDesc;
//3镰绎、私有化類的構(gòu)造器
? ? private Season1(String seasonName, String seasonDesc){
????????this.seasonName = seasonName;
????????this.seasonDesc = seasonDesc;
}
//4脓斩、其他需求:獲取沒去類對象的屬性
? ? public String getSeasonName() {
????????return seasonName;
}
????public String getSeasonDesc() {
????????return seasonDesc;
}
//4.其他需求:提供toString方法
? ? @Override
? ? public String toString() {
????????return "Season{" +
????????"seasonName='" +seasonName +'\'' +
????????", seasonDesc='" +seasonDesc +'\'' +
????'}';
}
//情況一:在enum類中實(shí)現(xiàn)抽象方法
//? ? @Override
//? ? public void show() {
//? ? ? ? System.out.println("This is a season~");
//? ? }
}