Kotlin常用的 Kotlin 类 ② ( 枚举类 | 枚举类定义函数 | 密封类 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin常用的 Kotlin 类 ② ( 枚举类 | 枚举类定义函数 | 密封类 )相关的知识,希望对你有一定的参考价值。
文章目录
一、枚举类
Kotlin 中使用 枚举类 定义常量 , 枚举类定义格式如下 : 枚举常量 都是 枚举类 的 实例对象 ;
enum class 枚举类类型名
枚举常量1,
枚举常量2,
...
代码示例 :
enum class Gender
MALE,
FEMALE
fun main()
println(Gender.MALE)
println(Gender.MALE is Gender)
执行结果 : 枚举类打印的结果是 枚举的 常量名称 ;
MALE
true
枚举的常量 Gender.MALE 是 Gender 类的一个 实例对象 ;
二、枚举类定义函数
在枚举类中 , 可以 定义函数 , 包括 普通函数 和 构造函数 ;
1、枚举类定义普通函数
通过 枚举类 的 类型常量 ( 实例对象 ) 可以 调用 枚举类中定义的方法 ;
为枚举类定义普通函数 : 在枚举类 Gender 中定义了 log 函数 , 相当于为 Gender.MALE 和 Gender.FEMALE 实例对象定义了 log 函数 ; Gender.MALE 和 Gender.FEMALE 实例对象可以直接调用该函数 ;
enum class Gender
MALE,
FEMALE;
fun log()
println("Gender, MALE, FEMALE")
fun main()
Gender.MALE.log()
执行结果 :
Gender, MALE, FEMALE
2、枚举类定义构造函数
为枚举类定义构造函数后 , 每个枚举常量都要传入对应的构造函数参数 ;
为枚举类定义构造函数 :
enum class Gender(var id: Int)
MALE(0),
FEMALE(1);
fun log()
println("Gender, MALE 0, FEMALE 1, id = $id")
fun main()
Gender.MALE.log()
Gender.FEMALE.log()
执行结果 :
Gender, MALE 0, FEMALE 1, id = 0
三、密封类
枚举类型 是一组 子类型 闭集 ;
密封类 可以 定义 枚举类型的 子类型闭集 , 一个密封类可以有多个子类 , 继承密封类的子类 必须 与 密封类在相同的 Kotlin 代码文件中 ;
密封类适用于这种情况 , 要使用枚举的特性 , 但是需要在枚举基础上保存多个特性 ;
枚举只能实现简单的常量列举 , 如果需要更复杂的 子类型闭集 , 则需要使用密封类 ;
代码示例 :
sealed class Gender
// Male 和 Female 都是 密封类 Gender 的子类
object Male: Gender()
object Female: Gender()
class Student(var name: String, var age: Int, var gender: Gender)
fun log()
when(gender)
is Gender.Male -> println("name = $name, age = $age, 男性")
is Gender.Female -> println("name = $name, age = $age, 女性")
fun main()
var gender = Gender.Female
var student = Student("Tom", 18, gender)
student.log()
执行结果 :
name = Tom, age = 18, 女性
以上是关于Kotlin常用的 Kotlin 类 ② ( 枚举类 | 枚举类定义函数 | 密封类 )的主要内容,如果未能解决你的问题,请参考以下文章