【2024最新版Kotlin教程】Kotlin第一行代码系列第六课-嵌套类,数据类,密封类
数据类在之前的课程已经讲了,嵌套类和密封类可以不学,很少用到的。
但为了系统的完整性还是说一下
一、嵌套类:
选学:按我经验嵌套类不常用
嵌套类(内部类):非静态内部类、静态内部类
class A {
class B {
}
}
class A1 {
val name: String = ""
// 静态内部类,自然不能方法外面类的属性和方法,就不持有A对象
class B {
//val a = name // 报错
}
}
class A2 {
val name: String = ""
// 非静态内部类即普通类,增加了一个关键字inner
inner class B {
val a = name // 通过
}
}
二、密封类:
密封类 关键字sealed,是更强大的枚举类
// 枚举类
enum class Sex {
MAN, WOMAN
}
fun isMan(data: Sex) = when(data) {
Sex.MAN -> true
Sex.WOMAN -> false
// 这里不需要else分支,已经判断完了
}
// 密封类,一般是密封数据类
sealed class RResult<out T : Any> {
data class Success<out T : Any>(val code: Int = 200,val msg: String? = null, val data: T? = null) : RResult<T>()
data class Error(val code: Int, val error: String) : RResult<Nothing>()
}