Kotlin 枚举、内部类

枚举类
  • Kotlin 中用enum声明枚举
enum class EnumC {
    A, B, C
}

枚举类有两个默认的属性

// name 对应对象的值
EnumC.A.name 
 // ordinal 对应对象的下标
EnumC.B.ordinal
  • 每一个枚举都是枚举类的实例
enum class EnumC(var color: String) {

    A("颜色A"), B("颜色B"), C("颜色C")
}
内部类
  • 普通嵌套类
class Clazz {
    class FirstC {
        private val f1: Int = 0
        val f2: Int = 1

        class SecondC {
            private val S1: Int = 0
            val S2: Int = 1

            class ThridC {
                private val T1: Int = 0
                val T2: Int = 1
            }
        }
    }
}

调用方式如下

Clazz.FirstC().f2
Clazz.FirstC.SecondC().S2
Clazz.FirstC.SecondC.ThridC().T2

可以看出直接使用 类名. 来访问,普通嵌套没有外部引用,所以无法访问外部变量。

  • 嵌套内部类
class Clazz {
    class F {
        private val m = 1
        val n = 2

        inner class S {
            fun outStr() {
                println(m)
                println(n)
            }
        }
    }
}

调用方式如下,采用的是 F(). 的方式,这是持有外部类的引用

 Clazz.F().S().outStr()
  • 匿名内部类
    匿名内部类就是没有名字的内部类。匿名内部类也可以访问外部类的变量。
class Clazz {
    class F {
        fun r() {
            Thread(object : Runnable {//匿名内部类
                override fun run() {
                    
                }
            }).start()
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值