嵌套类
定义
说的简单一点,就是定义在类里面的类。一般把定义内部类的外围类成为包装类或者外部类。
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
val demo = Outer.Nested().foo() // == 2
嵌套类的实例的创建方式与普通类稍有不同,需要先拥有其外部类的的实例,然后通过外部类的实例创建。
内部类
类可以使用 inner 关键字来标记, 然后就可以访问外部类(outer class)的成员.
class Button(var text: String = "") {
var listener: IClickListener? = null
private val no = 10
inner class Text {
fun getText() = text
fun setText(tex: String) {
text = tex
}
fun printNo() {
println("button-no: $no")
println(getColor())
}
}
private fun getColor(): String {
return "getColor"
}
}
内部类可以访问外部类中的成员属性和成员函数,这是因为内部类会保存一个引用, 指向
外部类的对象实例。所以,在内部类使用this关键字时,容易引起歧义,怎么消除歧义,我想你懂得。