Kotlin學習之-5.9 內部類

Kotlin學習之-5.9 內部類

類可以嵌套在其他類中:

class Outer {
    private val bar: Int = 1
    class Nested {
        fun foo() = 2
    }
}

val demo = Outer.Nested().foo() // == 2

內部類

一個類可以被標記成inner來表示可以訪問外部類的成員。內部類持有一個對外部類的引用。

class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}

val demo = Outer().Inner().foo() // == 1

this在兩種內部類中使用容易混淆,參見Qualified this expressions

匿名內部類

匿名內部類使用對象表達式來創建

window.addMouseListener(object: mouseAdapter() {
    overfide fun mouseClicked(e: MouseEvent) {
        // ...
    }

    overfide fun mouseEnterd(e: MouseEvent) {
    }
}

如果一個對象是一個函數式的java接口的實例(例如,一個單一抽象函數的接口),你可以使用lamda表達式來創建,在接口的類型前面使用lambda表達式。

val listener = ActionLisener { println("clicked") }

PS,我會堅持把這個系列寫完,有問題可以留言交流,也關注專欄Kotlin for Android Kotlin安卓開發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章