一、🔷 一句话总结:枚举类是一种特殊的类
✅ Java 的枚举(enum)是一种特殊的类(class),它由 Java 语言原生支持,用来表示一组固定的常量,具有类的很多特性,但也有自己独特的限制和用途。
你可以简单理解为:
|
对比项 |
普通类(class) |
枚举类(enum) |
|---|---|---|
|
是类吗? |
✅ 是一个普通类 |
✅ 也是一种类(特殊的类) |
|
能定义字段/方法吗? |
✅ 可以 |
✅ 也可以(很灵活!) |
|
能定义构造方法吗? |
✅ 可以 |
✅ 可以,但有限制(后面讲) |
|
能 new 出对象吗? |
✅ 可以随意 new |
❌ 不能随便 new,对象是固定的 |
|
用来干嘛的? |
通用业务逻辑封装 |
表示一组固定的常量,比如状态、类型、策略等 |
二、🔍 枚举类和普通类的核心区别
|
特性 |
普通类(class) |
枚举类(enum) |
|---|---|---|
|
定义方式 |
|
|
|
能否 new 实例 |
可以随意使用 |
❌ 不能随便 new,它的实例是有限的、预定义的 |
|
实例数量 |
可以有任意多个对象 |
✅ 只有在枚举中显式声明的那些对象(常量) |
|
用途 |
用于封装一般的业务逻辑、对象模型 |
用于表示一组固定的常量,如状态、类型、选项、策略等 |
|
是否可以有字段、方法、构造器 |
✅ 支持全部 |
✅ 也支持字段、方法、构造器,但构造器不能是 public 的 |
|
是否可以实现接口 / 继承类 |
✅ 可以 |
✅ 也可以实现接口,但不能继承其他类(所有枚举都隐式继承自 |
|
设计目的 |
通用对象建模 |
表示一组有限的、预定义的选项(常量集合) |
三、🔧 从代码上直观感受:枚举 vs 普通类
1. 普通类示例 ✅
// 普通类 public class Color { private String name; public Color(String name) { this.name = name; } public String getName() { return name; } }
你可以随意创建多个对象:
Color red = new Color("红色"); Color blue = new Color("蓝色"); Color green = new Color("绿色"); // 可以有无数个 Color 对象,没有限制
普通类的对象是 动态创建的、数量不限的、灵活的
2. 枚举类示例 ✅
// 枚举类 public enum Color { RED, // 枚举常量 BLUE, // 枚举常量 GREEN // 枚举常量 }
你不能 new Color(),而是直接使用预定义的常量:
Color red = Color.RED; Color blue = Color.BLUE; Color green = Color.GREEN;
✅ 枚举的实例(RED、BLUE、GREEN)是 在枚举类中预先定义好、固定不变的
❌ 你不能随意创建新的 Color 对象,比如
new Color("黄色")是不允许的
3899

被折叠的 条评论
为什么被折叠?



