【2025最新版Kotlin教程】Kotlin第一行代码系列第六课-嵌套类,数据类,密封类

139 阅读1分钟
【2025最新版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>()
}
整个kotlin教程的源码项目结构图:

在这里插入图片描述