枚举类
同步视频:哔哩哔哩 尚硅谷
类和对象只有有限个 ,确定的. 如
当需要定义一组常量时 强烈建议使用枚举类
1.枚举类的使用
- 枚举类的理解:类的对象只有有限个,确定的. 我们成此类为枚举类
- 当需要定义一组常量时,强烈建议使用枚举类
- 如果枚举类中只有一个对象,则可与i作为单列牧师的实现方式
2.如何定义枚举类
- 方式一:JDK5.0之前,自定义枚举类
- 方式二:JDK5.0,可以使用enum定义枚举类
2.1.方式一:自定义枚举类
- 声明Season对象的属性 :private final修饰
- 私有化类的构造器 并给对象属性赋值
- 提供当前枚举类的多个对象
- 其他诉求
实例:(自定义枚举类)
class Season{
// 1.声明Season对象的属性 :private final修饰
private final String seasonName;
private final String seasonDesc;
// 2.私有化类的构造器 并给对象属性赋值
private Season(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 3.提供当前枚举类的多个对象
public static final Season SPRING = new Season("春天","春暖花开");
public static final Season SUMMER = new Season("夏天","夏日炎炎");
public static final Season AUTUMN = new Season("秋天","秋高气爽");
public static final Season WINTER = new Season("冬天","冰天雪地");
// 4.其他诉求1:获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// 4.其他诉求2:提供toString()
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
实例:(测试类)
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
}
// 打印结果:
// Season{seasonName='春天', seasonDesc='春暖花开'}
2.2.方式二:使用enum定义枚举类
- 提供当前枚举类的多个对象 多个对象之间用,隔开!
- 声明Season对象的属性 :private final修饰
- 私有化类的构造器 并给对象属性赋值
- 其他诉求
说明: 定义的枚举类 , 默认继承于java.lang.Enum类
注意: 提供当前枚举类的多个对象时,与前面自定义枚举类不同!(更简洁了)
实例(使用enum定义枚举类)
enum Season1{
// 1.提供当前枚举类的多个对象 多个对象之间用,隔开!
SPRING("春天","春暖花开"),
SUMMER("夏天","夏日炎炎"),
AUTUMN("秋天","秋高气爽"),
WINTER("冬天","冰天雪地");
// 2.声明Season对象的属性 :private final修饰
private final String seasonName;
private final String seasonDesc;
// 3.私有化类的构造器 并给对象属性赋值
private Season1(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 4.其他诉求1:获取枚举类对象的属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// 4.其他诉求2:提供toString()
@Override
public String toString() {
return "Season1{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
实例:(测试类)
public static void main(String[] args) {
Season1 summer = Season1.SUMMER;
System.out.println(summer);
}
//打印结果:
// Season1{seasonName='夏天', seasonDesc='夏日炎炎'}