枚举类的对象是有限个
对象个数 一个可以看做单例模式的实现 多个 为枚举类
1 如何定义
cccccccc
1 私有化类的构造器。
2 成员变量如果声明为final。要在构造器中初始化,不允许被修改、
3 通过公共方法 调用属性。
4 创建枚举类的对象
单例模式中 ,通过公共方法调用。 也可以通过类来调用。
要用final修饰!!!! 声明为 public static final
使用enum关键字来定义枚举类
1 定义时必须先声明 (把final关键字放在最上面);
2
用枚举声明之后 图中蓝色部分可以省略 被改之后原来用;分割 应该为逗号, 最后一个用; 即可
常用方法:https://blog.csdn.net/kdc18333608478/article/details/72845587
可以让不同的枚举类对象调用被抽象的抽象方法,执行的效果不同。(相当于每一个对象重写抽象方法)
代码
package 面向对象;
public class TestSeason {
public static void main(String[] args) {
Season spring=Season.spring;
System.out.println(spring);
spring.show();
System.out.println(spring.getSeasonName());
System.out.println();
// 方法一
// Season[] seasons =Season.values();
// for (int i = 0; i < seasons.length; i++) {
// System.out.println(seasons[i]);
// }
// 方法2 要求传入的形参是枚举类对象的名字
String str = "spring";
Season sea = Season.valueOf(str);
System.out.println(sea);
System.out.println();
}
interface Info
{
void show();
}
enum Season implements Info
{
spring ("spring", "chunnuanhuakai")
{
public void show() {
System.out.println("i love you");
}
},
summer("summer","re")
{
public void show(){
System.out.println("sorry");
}
};
public final String seasonName;
public final String seasonDesc;
private Season(String seasonName,String seasonDesc)
{
this.seasonDesc=seasonName;
this.seasonName=seasonName;
}
public String getSeasonName()
{
return seasonName;
}
public String toString()
{
return "Season[ name="+seasonName+", seasonDesc="+seasonDesc+"]";
}
}
}
方法一结果
方法二结果