package com.btp.t4;
/*
* 一.枚舉類
* 1.如何自定義枚舉類
* 2.如何使用enum關鍵字定義枚舉類
* >常用的方法:values(),valueOf(String name)
* >如何讓枚舉類實作接口:讓不同的枚舉類對象調用被重寫的抽象方法,執行的效果不同。(相當于讓每個對象重寫抽象方法)
*/
public class TestSeason {
public static void main(String[] args){
Season spring=Season.SPRING;
System.out.println(spring);
spring.show();
System.out.println(spring.getSeasonDesc());
//1.values()
Season1[] season=Season1.values();
for(Object obj:season)
{
System.out.println(obj);
}
System.out.println();
//2.valueOf(String name):要求傳入的形參是枚舉類對象的名字,否則報異常
String str="SPRING";
Season1 sea=Season1.valueOf(str);
System.out.println(sea);
System.out.println();
sea.show();
System.out.println();
//Thread類的内部類State是一個枚舉類
Thread.State[] states=Thread.State.values();
for(Object obj:states)
{
System.out.println(obj);
}
}
}
//自定義枚舉類:如果隻有一個對象,則是單例模式
class Season{
//1.提供類的屬性,聲明為private final
private final String seasonName;
private final String seasonDesc;
//2.聲明為final的屬性,在私有化構造器中初始化
private Season(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//3.通過公共方法調用
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//4.建立枚舉類的對象:将類的對象聲明為public static final
public static final Season SPRING=new Season("spring","春暖花開");
public static final Season SUMMER=new Season("summer","夏日炎炎");
public static final Season AUTUMN=new Season("autumn","秋高氣爽");
public static final Season WINTER=new Season("winter","白雪皚皚");
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
}
public void show(){
System.out.println("這是一個"+this.getSeasonName()+"季節!");
}
}
//接口info
interface info{
void show();
}
//用enum關鍵字定義枚舉類
enum Season1 implements info{
//成員要寫在最前面
//讓不同的枚舉類對象調用被重寫的抽象方法,執行的效果不同。(相當于讓每個對象重寫抽象方法)
SPRING("spring","春暖花開"){
public void show(){
System.out.println("春天在哪裡?");
}
},
SUMMER("summer","夏日炎炎"){
public void show(){
System.out.println("生如夏花");
}
},
AUTUMN("autumn","秋高氣爽"){
public void show(){
System.out.println("秋天是分手的季節");
}
},
WINTER("winter","白雪皚皚"){
public void show(){
System.out.println("冬天裡的一把火火");
}
};
private final String seasonName;
private final String seasonDesc;
private Season1(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
}
// public void show() {
// // TODO 自動生成的方法存根
// System.out.println("這是一個季節!");
// }
}
轉載于:https://www.cnblogs.com/a842297171/p/5170344.html