








java
package com.fangfa.day05.Enum;
public class EnurmerDemo1 {
public static void main(String[] args) {
//为什么其他类里可以类名.对象名 因为这个对象名被static修饰了
//若不修饰不行
System.out.println(Season.SPRING);
}
}
class Season{
/**
* @Description
* @author Mao Reed
* @version 1.17.0
* @date 2026/3/27 15:28
* 之所以能在 Season 内部调用 new Season(...),
* 是因为构造器被 private 修饰,只能在 Season 类的内部访问。
* 这种写法是手动实现枚举效果的一种常见方式:通过私有构造器和预定义的静态常量来限制对象个数。
*
*
* 构造器是 private 的,因此只能在 Season 类的内部调用 new Season(...),外部无法直接实例化。
*
* 类内部通过 public static 常量提前创建好有限的几个对象(例如 SPRING、SUMMER 等),
* 外部可以通过 Season.SPRING 访问。
*/
private String name ;
private String desc;
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("冬天","寒冷");
//构造器私有
//去掉setXX方法防止属性被修改
private Season(String name, String desc) {
this.desc = desc;
this.name = name;
}
public String getDesc() {
return desc;
}
public String getName() {
return name;
}
//setName 是一个典型的 setter 方法(设置器),用于在对象创建之后,修改对象的某个属性值
// public void setName(String name) {
// this.name = name;
// }
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}


