定义枚举类
/**
* 枚举最常用的方法
* 定义枚举常量 , 使用逗号隔开
* 每个枚举常量都是一个对象
*
* 这里定义了 左 右 两个方向
*/
enum class Direction{
LEFT,
RIGHT
}
声明成员变量
/**
* 枚举初始化时,可以声明一个成员变量
* 在定义枚举常量时, 可以为其初始化一个值
*/
enum class Number (var num : Int){
ONE(1),
TWO(2)
}
定义抽象方法
/**
* 枚举常量匿名类
*/
enum class Student{
GOOD_STUDENT{
override fun say() {
println("好学生")
}
},
BAD_STUDENT{
override fun say() {
println("坏学生")
}
}; //使用分号枚举常量分隔成员方法
/**
* 定义枚举常量的抽象方法
*/
abstract fun say()
}
枚举类中可以定义枚举常量的抽象方法 。
① 实现方式 : 每个枚举常量必须在匿名类中实现此处定义的抽象方法;
② 定义位置 : 枚举常量的抽象方法要定义在枚举类最后 。
实现接口
枚举类可以实现接口 , 等同于将接口中的抽象方法定义在枚举类中 。
/**
* 声明一个接口
*/
interface Speak{
fun speak()
}
/**
* 该枚举类实现 human 接口
* 每个枚举常量都要实现 speak 方法
*/
enum class Human : Speak{
MAN{
override fun speak() {
println("男人")
}
},
WOMEN{
override fun speak() {
println("女人")
}
}
}
使用枚举类
//打印枚举常量名称
//LEFT
//LEFT
println(Direction.LEFT)
println(Direction.LEFT.name)
//打印枚举常量位置索引
//0
println(Direction.LEFT.ordinal)
//打印枚举类成员变量值
//1
println(Number.ONE.num)
//调用枚举类的实现自身定义的抽象方法
//好学生
Student.GOOD_STUDENT.say()
//调用枚举类实现的接口方法
//男人
Human.MAN.speak()