kotlin关键字:lateinit、by lazy、enum、inner、sealed

lateinit:kotlin语言延迟初始化lateinit(手动加载)

class Kt14 {
    lateinit var name: String

    fun request() {
        name = "张三"
    }

    fun response() {
        //是否初始化
        if (::name.isInitialized)
            println("姓名:${name}")
    }
}

fun main() {
    val kt14 = Kt14()
    kt14.request()
    kt14.response()
}

by lazy:kotlin语言惰性初始化(使用自动加载)

class Kt15 {
    val name by lazy {//使用时才会加载
        println("开始读取...")
        println("结束读取...")
        "读取成功!!!!"
    }
}

fun main() {
    println("准备读取")
    Thread.sleep(5000)
    println(Kt15().name)
}

enum:kotlin枚举类

class Info(var name: String, var age: Int) {

}

enum class Kt16(var info: Info) {
    //枚举类的参数类型必须和枚举的参数类型一致  Kt16(var info: Info) == LEFT_HEAD(Info("张三",11))
    LEFT_HEAD(Info("张三", 11)),
    RIGHT_HEAD(Info("李四", 12)),
    LEFT_FOOT(Info("王五", 13)),
    RIGHT_FOOT(Info("赵六", 14));//枚举结束;

    fun show() {
        println("${info.name}:${info.age}")
    }
}

fun main() {
    Kt16.LEFT_FOOT.show()//结果:王五:13
    Kt16.LEFT_HEAD.show()//结果:张三:11
}

inner:kotlin内部类

class Kt17 {
    var name: String = "杀杀杀"

    inner class Student() {
        //加上inner才是内部类,才可以访问外部类属性
        var sname = name
    }
}

fun main() {
    println(Kt17().Student().sname)//结果:杀杀杀
}

sealed:kotlin语言密封类(enum的升级版,可以有单例,也可以有多个实例的)

sealed class Kt18 {
    //单例模式
    object Trantion1 : Kt18()
    object Trantion2 : Kt18()
    object Trantion3 : Kt18()

    //可以多个实例
    class Trantion4(var name: String) : Kt18()
}

class Teachers(val exma: Kt18) {
    fun show() =
        when (exma) {
            is Kt18.Trantion1 -> "分数差"
            is Kt18.Trantion2 -> "分数还好"
            is Kt18.Trantion3 -> "分数良好"
            is Kt18.Trantion4 -> "${this.exma.name}分数优秀"
        }

}

fun main() {
    println(Teachers(Kt18.Trantion1).show())
    println(Teachers(Kt18.Trantion4("张三")).show())
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值