【Kotlin】Kotlin enum 枚举类 ( 常用用法 | 初始化成员变量 | 实现抽象方法 | 实现接口 | 获取名称和位置索引 | 调用枚举常量方法 )

简介: 【Kotlin】Kotlin enum 枚举类 ( 常用用法 | 初始化成员变量 | 实现抽象方法 | 实现接口 | 获取名称和位置索引 | 调用枚举常量方法 )

文章目录

I . 枚举类常用用法

II . 枚举类初始化

III. 枚举类匿名类

IV . 枚举类实现接口

V . 获取枚举常量名称和位置索引

VI . 获取枚举常量的成员变量

VII . 调用枚举常量的方法

VIII . Kotlin 枚举完整代码示例



I . 枚举类常用用法


枚举最常用的方法 : 定义枚举常量 , 使用逗号隔开 , 每个枚举常量都是一个对象 ;


/**
 * 枚举最常用的方法
 *      定义枚举常量 , 使用逗号隔开
 *      每个枚举常量都是一个对象
 *
 * 这里定义了 左 右 两个方向
 */
enum class Direction{
    LEFT, RIGHR
}




II . 枚举类初始化


枚举初始化 : 定义枚举常量时 , 为其声明一个成员变量 , 可以为其初始化一个值


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




III. 枚举类匿名类


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


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


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


/**
 * 枚举常量匿名类
 */
enum class Student{
    GOOD_STUDENT{
        override fun say() {
            println("好学生")
        }
    },
    BAD_STUDENT{
        override fun say() {
            println("坏学生")
        }
    };  //定义了成员方法后, 最后一个枚举常量后需要使用分号
    /**
     * 定义枚举常量的抽象方法
     * 每个 枚举常量 必须在 匿名类中 实现此处定义的抽象方法
     * 枚举常量的抽象方法要定义在枚举类最后
     */
    abstract fun say()
}



IV . 枚举类实现接口


枚举类实现接口 : 枚举类可以实现接口 , 等同于将接口中的抽象方法定义在枚举类中 ;


/**
 * 声明一个接口
 */
interface Speak{
    fun speak()
}
/**
 * 该枚举类实现 human 接口
 *  每个枚举常量都要实现 speak 方法
 */
enum class Human : Speak{
    MAN{
        override fun speak() {
            println("男人")
        }
    },
    WOMEN{
        override fun speak() {
            println("女人")
        }
    }
}




V . 获取枚举常量名称和位置索引


获取枚举常量名称和位置索引 :


① 获取枚举类名称 : 枚举类.常量名称.name 可以获取该枚举常量的名称 ;


( 打印 枚举类.常量名称 也可以将枚举常量名称打印出来)


② 获取枚举类索引 : 枚举类.常量名称.ordinal 可以获取该枚举常量的位置索引 , 从 0 开始计数 ;


//打印枚举类 , 直接打印其名称
//LEFT
println(Direction.LEFT)
//RIGHR
println(Direction.RIGHR)
//ONE
println(Number.ONE)
//TWO
println(Number.TWO)
//打印枚举类 name 名称
//LEFT
println(Direction.LEFT.name)
//RIGHR
println(Direction.RIGHR.name)
//ONE
println(Number.ONE.name)
//TWO
println(Number.TWO.name)
//打印枚举类 ordinal 位置索引
//0
println(Direction.LEFT.ordinal)
//1
println(Direction.RIGHR.ordinal)



VI . 获取枚举常量的成员变量


在枚举定义时 , 可以为其制定成员变量 , enum class 枚举名称 : ( var 成员名 : 成员类型 ) , 枚举常量定义时 , 可以为其初始化值 枚举常量名称 ( 成员值 ) ;


//打印枚举类 成员变量值

//1

println(Number.ONE.num)

//2

println(Number.TWO.num)

1

2

3

4

5



VII . 调用枚举常量的方法


使用 枚举类.枚举常量名.方法名() 可以调用枚举常量匿名类中的枚举方法 ;


//调用枚举类的实现的自身定义的抽象方法
//好学生
Student.GOOD_STUDENT.say()
//坏学生
Student.BAD_STUDENT.say()
//调用枚举类实现的接口方法
//男人
Human.MAN.speak()
//女人
Human.WOMEN.speak()




VIII . Kotlin 枚举完整代码示例


package enum


/**
 * 枚举最常用的方法
 *      定义枚举常量 , 使用逗号隔开
 *      每个枚举常量都是一个对象
 *
 * 这里定义了 左 右 两个方向
 */
enum class Direction{
    LEFT, RIGHR
}
/**
 * 枚举初始化
 * 定义枚举常量时 , 为其声明一个成员变量 , 可以为其初始化一个值
 */
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("女人")
        }
    }
}
fun main() {
    //打印枚举类 , 直接打印其名称
    //LEFT
    println(Direction.LEFT)
    //RIGHR
    println(Direction.RIGHR)
    //ONE
    println(Number.ONE)
    //TWO
    println(Number.TWO)
    //打印枚举类 name 名称
    //LEFT
    println(Direction.LEFT.name)
    //RIGHR
    println(Direction.RIGHR.name)
    //ONE
    println(Number.ONE.name)
    //TWO
    println(Number.TWO.name)
    //打印枚举类 ordinal 位置索引
    //0
    println(Direction.LEFT.ordinal)
    //1
    println(Direction.RIGHR.ordinal)
    //打印枚举类 成员变量值
    //1
    println(Number.ONE.num)
    //2
    println(Number.TWO.num)
    //调用枚举类的实现的自身定义的抽象方法
    //好学生
    Student.GOOD_STUDENT.say()
    //坏学生
    Student.BAD_STUDENT.say()
    //调用枚举类实现的接口方法
    //男人
    Human.MAN.speak()
    //女人
    Human.WOMEN.speak()
}


执行结果 :


LEFT
RIGHR
ONE
TWO
LEFT
RIGHR
ONE
TWO
0
1
1
2
好学生
坏学生
男人
女人



目录
相关文章
|
4天前
|
Java 物联网 Kotlin
Kotlin - 面向对象之抽象类与接口
Kotlin - 面向对象之抽象类与接口
11 0
|
19天前
|
IDE 开发工具 iOS开发
Kotlin教程笔记(11) - 面向对象之抽象类与接口
本系列教程笔记详细讲解了Kotlin语法,适合深入学习。若需快速掌握Kotlin,建议查阅“简洁”系列教程。本文重点介绍了Kotlin中的抽象类与接口,包括接口的定义、实现、继承,以及抽象类的定义、构造器、方法实现等关键概念。
28 2
|
2天前
|
Kotlin
Kotlin - 枚举与密封类
Kotlin - 枚举与密封类
12 3
Kotlin - 枚举与密封类
|
6天前
|
Java 物联网 Kotlin
Kotlin教程笔记(11) - 面向对象之抽象类与接口
Kotlin教程笔记(11) - 面向对象之抽象类与接口
40 9
|
4天前
|
JavaScript Java Kotlin
Kotlin - 常量与变量
Kotlin - 常量与变量
19 6
|
5天前
|
Java 物联网 Kotlin
Kotlin - 面向对象之抽象类与接口
Kotlin - 面向对象之抽象类与接口
24 5
|
7天前
|
JavaScript Java Kotlin
Kotlin教程笔记(5) - 常量与变量
Kotlin教程笔记(5) - 常量与变量
24 2
|
11天前
|
Java 物联网 Kotlin
Kotlin - 面向对象之抽象类与接口
Kotlin - 面向对象之抽象类与接口
18 5
|
9天前
|
Java 物联网 Kotlin
Kotlin教程笔记(11) - 面向对象之抽象类与接口
Kotlin教程笔记(11) - 面向对象之抽象类与接口
|
10天前
|
Kotlin
Kotlin教程笔记(20) - 枚举与密封类
Kotlin教程笔记(20) - 枚举与密封类
18 1