定义枚举类
/*** 枚举最常用的方法* 定义枚举常量 , 使用逗号隔开* 每个枚举常量都是一个对象** 这里定义了 左 右 两个方向*/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//LEFTprintln(Direction.LEFT)println(Direction.LEFT.name)//打印枚举常量位置索引//0println(Direction.LEFT.ordinal)//打印枚举类成员变量值//1println(Number.ONE.num)//调用枚举类的实现自身定义的抽象方法//好学生Student.GOOD_STUDENT.say()//调用枚举类实现的接口方法//男人Human.MAN.speak()
