1.定義在類內部的類
2.與類成員有相似的訪問控制
3.默認是靜態內部類,非靜態用inner關鍵字
4.內部類調用外部成員使用this@外部成員類名.成員變量名
class Outside {
var a: Int = 100
/**
* inner非靜態內部類
*/
inner class Inside {
val a: Int = 50
fun test(): Unit {
/**
* 調用外部類的成員變量
*/
println([email protected])
}
}
}
fun main(args: Array<String>) {
var inside = Outside().Inside()
inside.test()
}
-------------------------------------------------------------------------------------------------------------------
匿名內部類
1.沒有定義名字的內部類
2.類名編譯時生成類似 類名$1.class
interface Tv {
fun wacthTv()
}
abstract class Radio {
abstract fun listenRadio()
}
class View {
var tv: Tv? = null
}
fun main(args: Array<String>) {
val view = View()
/**
* 實現匿名方法以及集成其他類
*/
view.tv = object : Tv, Radio() {
override fun listenRadio() {
}
override fun wacthTv() {
}
}
}