Kotlin程式設計相關知識點介紹:
- Kotlin程式設計之使用Intellij IED和了解源檔案(.kt)
- Kotlin程式設計之類的介紹和使用
- Kotlin程式設計之類的屬性
- Kotlin程式設計之方法
- Kotlin程式設計之父類和繼承父類
- Kotlin程式設計之接口和實作接口
- Kotlin程式設計之伴生對象,抽象類,密封類
和Java程式設計類似,在Kotlin程式設計也有嵌套類和内部類,及匿名内部類。
開始編寫一個案例,來了解這三者,代碼如下:
package com.xingen.kotlin.day2017529
fun main(args: Array<String>) {
/**
* 調用嵌套類中的方法
*/
Test.Nested().nestedTest()
var instance = Test()
/**
* 調用内部類中的方法
*/
instance.Inner().innerTest()
/**
* 采用對象表達式來建立接口對象,即匿名内部類的執行個體。
*/
instance.setInterFace(object : TestInterFace {
override fun test() {
println("對象表達式建立匿名内部類的執行個體")
}
})
}
class Test {
var v = "成員屬性"
/**
* 一個在類中嵌套的類
* 引用不到外層嵌套類的成員
*/
class Nested {
fun nestedTest() {
println("類可以嵌套其他類中")
}
}
/**
* inner标記一個類是内部類
* 可以引用外部類的成員
* 采用[email protected]類名方式,擷取到外部類的this對象
*/
inner class Inner {
fun innerTest() {
var t = this@Test //擷取外部類的成員變量
println("内部類可以引用外部類的成員,例如:" + t.v)
}
}
fun setInterFace(test: TestInterFace) {
test.test()
}
}
/**
* 定義接口
*/
interface TestInterFace {
fun test()
}
輸出結果:
類可以嵌套其他類中
内部類可以引用外部類的成員,例如:成員屬性
對象表達式建立匿名内部類的執行個體
可知:
- 類中可以嵌套類,建立嵌套類對象方式 :
,嵌套類引用不了外部類的成員,這和Java類似,相當于隐式的外部類。外部類名.嵌套類()
- 用
标記的嵌套類是内部類,建立内部類的對象的方式 :inner
。可以引用外部類的成員,引用外部類的this對象的方式 :外部類名().Inner()
var [email protected]外部類名
- 通過對象表達式來 建立匿名内部類的對象,可以避免重寫抽象類的子類和接口的實作類,這和Java中匿名内部類的是接口和抽象類的延伸一緻。