Kotlin學習筆記(三十八)內(nèi)部類

/**
 * 內(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()
}
運行結果
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容