枚举类
- 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()
}
}
}