Java基礎第二遍-列舉類
阿新 • • 發佈:2021-11-09
列舉類
- 簡介
- 類的物件是有限個的,例如:星期:(星期1-星期7)
- 定義一組常量時,強烈建議使用列舉類
- 如果列舉類只有一個物件,那麼可以作為單例模式實現
列舉類的使用
- 自定義列舉類
//jkd1.5以前實現列舉類 package com.bixiangdong.enum1; public class Demo01 { } //自定義列舉類 class Season{ //宣告Season物件的屬性private final private final String seasonName; private final String seasonDesc; //私有化類的構造器,並給物件屬性賦值 private Season(String seasonName,String seasonDesc){ this.seasonName=seasonName; this.seasonDesc=seasonDesc; } //提供當前列舉類的多個物件,public static final public static final Season SPRING = new Season("春天","這是春天"); public static final Season SUMMER = new Season("夏天","這是夏天"); public static final Season AUTUME = new Season("秋天","這是秋天"); public static final Season WINTER = new Season("冬天","這是冬天"); //獲取列舉類物件的屬性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
- enum關鍵字
public class Demo02 { } //自定義列舉類,enum建立的列舉類自動繼承,Enum enum Season1{ //提供當前列舉類的多個物件,簡化了一些配置但本質還是public static final SPRING("春天","這是春天"), SUMMER("夏天","這是夏天"), AUTUME("秋天","這是秋天"), WINTER("冬天","這是冬天"); //宣告Season物件的屬性private final private final String seasonName; private final String seasonDesc; //私有化類的構造器,並給物件屬性賦值 private Season1(String seasonName,String seasonDesc){ this.seasonName=seasonName; this.seasonDesc=seasonDesc; } //獲取列舉類物件的屬性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
- Enum類的主要方法
- values();
- valueOf();
- toString();
package com.bixiangdong.enum1; public class Demo02 { public static void main(String[] args) { //返回列舉類的所有物件,一陣列的形式儲存 Season1[] values = Season1.values(); //根據字串獲取物件的列舉物件 valueOf中大小寫敏感 Season1 spring = Season1.valueOf("SPRING"); System.out.println(spring); //toString();返回當前物件名稱 System.out.println(Season1.AUTUME.toString()); } } //自定義列舉類,enum建立的列舉類自動繼承,Enum enum Season1{ //提供當前列舉類的多個物件,簡化了一些配置但本質還是public static final SPRING("春天","這是春天"), SUMMER("夏天","這是夏天"), AUTUME("秋天","這是秋天"), WINTER("冬天","這是冬天"); //宣告Season物件的屬性private final private final String seasonName; private final String seasonDesc; //私有化類的構造器,並給物件屬性賦值 private Season1(String seasonName,String seasonDesc){ this.seasonName=seasonName; this.seasonDesc=seasonDesc; } //獲取列舉類物件的屬性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } // @Override // public String toString() { // return "Season{" + // "seasonName='" + seasonName + '\'' + // ", seasonDesc='" + seasonDesc + '\'' + // '}'; // } }
- 實現介面的列舉類
package com.bixiangdong.enum1;
public class Demo03 {
}
interface Test{
void show();
}
//列舉類實現介面並重寫方法,第一種重寫的方法
enum Season2 implements Test{
//提供當前列舉類的多個物件,簡化了一些配置但本質還是public static final
SPRING("春天","這是春天"),
SUMMER("夏天","這是夏天"),
AUTUME("秋天","這是秋天"),
WINTER("冬天","這是冬天");
//宣告Season物件的屬性private final
private final String seasonName;
private final String seasonDesc;
//私有化類的構造器,並給物件屬性賦值
private Season2(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//獲取列舉類物件的屬性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public void show() {
System.out.println("第一種重寫的方法");
}
}
//列舉類實現介面並重寫方法,第一種重寫的方法
enum Season3 implements Test{
//提供當前列舉類的多個物件,簡化了一些配置但本質還是public static final
SPRING("春天","這是春天"){
@Override
public void show() {
System.out.println("物件中重寫,每個呼叫的都不一樣");
}
},
SUMMER("夏天","這是夏天"){
@Override
public void show() {
System.out.println("物件中重寫,每個呼叫的都不一樣");
}
},
AUTUME("秋天","這是秋天"){
@Override
public void show() {
System.out.println("物件中重寫,每個呼叫的都不一樣");
}
},
WINTER("冬天","這是冬天"){
@Override
public void show() {
System.out.println("物件中重寫,每個呼叫的都不一樣");
}
};
//宣告Season物件的屬性private final
private final String seasonName;
private final String seasonDesc;
//私有化類的構造器,並給物件屬性賦值
private Season3(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
}
//獲取列舉類物件的屬性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}