为什么要引入枚举类:

例:

【java核心卷笔记】枚举类_接口实现

【java核心卷笔记】枚举类_接口实现_02

 

就是因为在没有枚举类的时候,我们要定义一个有限的序列,比如星期几,男人女人,春夏秋冬,一般会静态常量的形式,但是使用那样的形式如果需要一些其他的功能,需要些很多奇奇怪怪的代码。所以,枚举类的出现,就是为了简化这种操作

使用一个简单的枚举类表示 星期: 

【java核心卷笔记】枚举类_接口实现_03

在枚举类中添加值和方法

【java核心卷笔记】枚举类_类型安全_04

 

当一个类的对象是有限且固定时,用枚举类比较方便。

为什么不使用静态常量替代枚举类?

1、类型不安全。如果一个方法要求传入参数,如果是枚举类型,只能传入枚举类型中包含的对象

2、没有命名空间。

简单的枚举类:

【java核心卷笔记】枚举类_枚举类_05

高级的枚举类(带参构造器):

【java核心卷笔记】枚举类_接口实现_06

枚举类的所有实例都必须放在第一行展示,不需要使用new关键字,不需显示调用构造器,自动添加public static final修饰。

使用enum定义非抽象的枚举类默认使用final修饰,不可以被继承。

枚举类的构造器只能是私有的。

枚举类内也可以定义属性和方法,可以是静态的非静态的。

枚举类实现接口:

枚举类可以实现一个或多个接口。需要实现接口中的所有方法,若没有完全实现,则枚举类应设为abstract类。

 

【java核心卷笔记】枚举类_命名空间_07

【java核心卷笔记】枚举类_命名空间_08

 

 采取实现了实现抽象方法和匿名内部类的实现,花括号部分是一个类体。

枚举类实现抽象方法:

【java核心卷笔记】枚举类_枚举类_09

 

java核心卷示例代码:

【java核心卷笔记】枚举类_枚举类_10

【java核心卷笔记】枚举类_接口实现_11

 

枚举类和switch:

【java核心卷笔记】枚举类_接口实现_12

case表达式直接写入枚举值,不需加入枚举类作为限定。