Kotlin-巢狀類
阿新 • • 發佈:2018-12-26
巢狀類
定義
說的簡單一點,就是定義在類裡面的類。一般把定義內部類的外圍類成為包裝類或者外部類。
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關鍵字時,容易引起歧義,怎麼消除歧義,我想你懂得。