定义枚举类

  1. /**
  2. * 枚举最常用的方法
  3. * 定义枚举常量 , 使用逗号隔开
  4. * 每个枚举常量都是一个对象
  5. *
  6. * 这里定义了 左 右 两个方向
  7. */
  8. enum class Direction{
  9. LEFT,
  10. RIGHT
  11. }

声明成员变量

  1. /**
  2. * 枚举初始化时,可以声明一个成员变量
  3. * 在定义枚举常量时, 可以为其初始化一个值
  4. */
  5. enum class Number (var num : Int){
  6. ONE(1),
  7. TWO(2)
  8. }

定义抽象方法

  1. /**
  2. * 枚举常量匿名类
  3. */
  4. enum class Student{
  5. GOOD_STUDENT{
  6. override fun say() {
  7. println("好学生")
  8. }
  9. },
  10. BAD_STUDENT{
  11. override fun say() {
  12. println("坏学生")
  13. }
  14. }; //使用分号枚举常量分隔成员方法
  15. /**
  16. * 定义枚举常量的抽象方法
  17. */
  18. abstract fun say()
  19. }

枚举类中可以定义枚举常量的抽象方法 。

① 实现方式 : 每个枚举常量必须在匿名类中实现此处定义的抽象方法;

② 定义位置 : 枚举常量的抽象方法要定义在枚举类最后 。

实现接口

  1. /**
  2. * 声明一个接口
  3. */
  4. interface Speak{
  5. fun speak()
  6. }
  7. /**
  8. * 该枚举类实现 human 接口
  9. * 每个枚举常量都要实现 speak 方法
  10. */
  11. enum class Human : Speak{
  12. MAN{
  13. override fun speak() {
  14. println("男人")
  15. }
  16. },
  17. WOMEN{
  18. override fun speak() {
  19. println("女人")
  20. }
  21. }
  22. }
枚举类可以实现接口 , 等同于将接口中的抽象方法定义在枚举类中 。

使用枚举类

  1. //打印枚举常量名称
  2. //LEFT
  3. //LEFT
  4. println(Direction.LEFT)
  5. println(Direction.LEFT.name)
  6. //打印枚举常量位置索引
  7. //0
  8. println(Direction.LEFT.ordinal)
  9. //打印枚举类成员变量值
  10. //1
  11. println(Number.ONE.num)
  12. //调用枚举类的实现自身定义的抽象方法
  13. //好学生
  14. Student.GOOD_STUDENT.say()
  15. //调用枚举类实现的接口方法
  16. //男人
  17. Human.MAN.speak()