传统的写一个季节类,然后有一个季节名字和描述,并为属性设置get set方法。
在主方法中我们可以随意设置季节名字,但是我们知道这是不合适的,因为我们知道只有4个季节
所以我们可以设置为一个枚举类(只读不改)
枚举
是一组常量的集合,是一种特殊类,只包含一组有限的特定对象。
枚举的2种实现方式
(1)自定义类实现
- 将构造器私有化,防止实例化对象
- 去除set方法,保留get方法,防止属性被修改
- 在该类直接创建固定的公有且静态的该类对象,有几个枚举就创建几个对象(即使构造器私有,在该类内部可以访问)
- 重写toString方法,然后打印对象即可输出内容
-
优化:使用静态属性会导致类的加载,所以可以加入final修饰符,优化代码,不会导致类的加载
public static Season SPRING=new Season("春天","温暖");
...
...
public static Season WINTER=new Season("冬天","寒冷");
(2)enum关键字
- 用enum代替class
- 常量名(实参列表)
- 多个常量用逗号间隔,最后一个带分号
- 定义的枚举常量必须写在类内部的最前面
- 构造器必须为私有
- 用enum关键词后,就不可以继承其他类了,因为会隐式继承Enum类,单继承机制
- 可以实现接口
- 里面的常量都是public static final