【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, 女性
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Kotlin中的枚举类是一种特殊的,它用于表示一组相关的常量。可以将枚举类理解为一种预定义的常量集合,它包含了一些固定的可选项,例如颜色、方向、状态等等。 Kotlin中的枚举类使用关键字"enum"来定义枚举类中的每个常量都是枚举类的一个实例对象。可以使用枚举类名.常量名的方式访问枚举类中的常量。 下面是一个简单的例子: ``` enum class Color { RED, GREEN, BLUE } fun main() { val color = Color.RED println(color) // 输出 RED } ``` 在上面的例子中,我们定义了一个名为Color的枚举类,它包含了三个常量:RED、GREEN和BLUE。在main函数中,我们创建了一个Color型的变量color,并将它的值设置为RED。最后,我们输出了color的值,它将会输出"RED"。 在Kotlin中,枚举类可以包含属性、方法和构造函数等内容,可以根据需要来定义。例如: ``` enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF); fun containsRed(): Boolean = (rgb and 0xFF0000) != 0 } fun main() { val color = Color.GREEN println(color.containsRed()) // 输出 false } ``` 在上面的例子中,我们在Color枚举类中添加了一个rgb属性,用于存储颜色的RGB值。我们还定义了一个containsRed方法,用于判断该颜色是否包含红色成分。在main函数中,我们创建了一个Color型的变量color,并将它的值设置为GREEN。最后,我们调用containsRed方法并输出其返回值,它将会输出"false"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值