类的对象只有有限个,且是确定的
当定义一组常量时,建议使用枚举类
public class SeasomTest {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
}}
//自定义枚举类
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
public static final Season SPRING=new Season("春天","春暖花开");
public static final Season SUNNER=new Season("夏天","夏日炎炎");
public static final Season AUTNMN=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 class SeasonTest1 {
public static void main(String[] args) {
Season1 sunner = Season1.SUNNER;
Season1 autnmn = Season1.AUTNMN;
Season1 winter = Season1.WINTER;
//toString()
System.out.println(sunner.toString());//SUNNER
System.out.println(Season1.class.getSuperclass());// java.lang.Enum
System.out.println("*********************");
//values():
Season1[ ] values = Season1.values();
for(int i=0;i<values.length;i++){
System.out.println(values[i]);
}
//valueOf(String objName):返回枚举类中对象是ObjName的对象
//如果没有objName的枚举类对象,则抛异常:IllegalArgumentException
Season1 spring = Season1.valueOf("SPRING");
System.out.println(spring);//SPRING
// Season1 spring1 = Season1.valueOf("SPRING1");
// System.out.println(spring1);//IllegalArgumentException:No enum constant com.aigugui325.Season1.SPRING1
spring.show();
sunner.show();
autnmn.show();
winter.show();
}
}
interface Info{
void show();
}
//使用enum枚举类
//说明:定义的枚举类默认继承于java.lang.Enum
enum Season1 implements Info{
//1.提供当前枚举类的多个对象,多个对象间用逗号 最后用封号
SPRING("春天","春暖花开"){
@Override
public void show() {
System.out.println("这是春天");
}
},
SUNNER("夏天","夏日炎炎"){
@Override
public void show() {
System.out.println("这是夏天");
}
},
AUTNMN("秋天","硕果累累"){ @Override
public void show() {
System.out.println("这是秋天");
}},
WINTER("冬天","白雪皑皑"){ @Override
public void show() {
System.out.println("这是冬天");
}};
//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 "Season{" +
// "seasonName='" + seasonName + '\'' +
// ", seasonDesc='" + seasonDesc + '\'' +
// '}';
// }
// @Override
// public void show() {
// System.out.println("这是一个季节");
// }
}