內部類也叫做嵌套類,在Java里是一個被大家經常使用到的東西。內部類除了匿名內部類外還分為三種,一種是可以自由訪問外部類成員變量和方法的成員內部類,一種是可以被獨立構造實例且和外部類完全剝離的靜態內部類,一種是作用域和生命周期都只處在一個方法中的方法內部類,但這種內部類我們不討論。
Kotlin的大部分用法和Java差不多,可用Kotlin按照Java的寫法來寫內部類,你會發現不管是直接引用外部類的成員和方法還是用this@
去顯式引用外部類的成員和方法,都不管用,為嘛咧?
因為Kotlin默認內部類是靜態內部類,和Java相反。
接下來就看看Kotlin中的兩種靜態類的寫法,假設我們外部類叫做Outer
,內部類叫做Inner
靜態內部類
/**
* 代碼還未驗證
*/
class Outer {
// 默認Inner類為靜態內部類
class Inner {}
}
成員內部類
關鍵在于需要用inner關鍵字來修飾內部類的聲明,才能讓Kotlin中默認的靜態內部類變為非靜態的成員內部類
/**
* 代碼還未驗證
*/
class Outer {
val name = "Outer"
inner class Inner {
fun printParent() {
// 訪問外部類成員時指明類作用域
println(this@Outer.name)
}
}
}
下次有機會說說匿名內部類的寫法= ̄ω ̄=