/**
* 內(nèi)部類
* 1.kotlin默認的內(nèi)部類是靜態(tài)內(nèi)部類,不能持有外部類的狀態(tài)(屬性、方法等)
* 2.給內(nèi)部類加上inner關鍵詞之后,就會變成非靜態(tài)內(nèi)部類,可以訪問外部類的屬性和方法
* 3.非靜態(tài)內(nèi)部類想訪問外部類的屬性,可以使用 this@外部類名.外部類屬性名 的形式訪問
* 4.非靜態(tài)內(nèi)部類可以訪問到外部靜態(tài)內(nèi)部類的方法和屬性,靜態(tài)內(nèi)部類訪問不到外部所有的屬性和方法
*/
class Outer { //外部類
private val text: String = "I like this world"
class Inner { //靜態(tài)內(nèi)部類
private val text: String = "NEW"
fun show() {
// println(this@Outer.text) //此處訪問不到
println(this.text) //訪問Inner中的text
}
}
inner class Inner2 { //非靜態(tài)內(nèi)部類
private val text: String = "Great"
fun show2() {
println(this.text) //訪問Inner2中的text
println(this@Outer.text) //此處的寫法相當于java中的Outer.this.text
}
}
}
fun main(args: Array<String>) {
val inner = Outer.Inner() //靜態(tài)內(nèi)部類
val inner2 = Outer().Inner2() //非靜態(tài)內(nèi)部類
inner.show()
inner2.show2()
}

運行結果