[Kotlin] 内部类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Kotlin] 内部类相关的知识,希望对你有一定的参考价值。
参考技术A内部类 也叫做嵌套类,在Java里是一个被大家经常使用到的东西。内部类除了匿名内部类外还分为三种,一种是可以自由访问外部类成员变量和方法的 成员内部类 ,一种是可以被独立构造实例且和外部类完全剥离的 静态内部类 ,一种是作用域和生命周期都只处在一个方法中的 方法内部类 ,但这种内部类我们不讨论。
Kotlin的大部分用法和Java差不多,可用Kotlin按照Java的写法来写内部类,你会发现不管是直接引用外部类的成员和方法还是用 this@ 去显式引用外部类的成员和方法,都不管用,为嘛咧?
因为Kotlin默认内部类是 静态内部类 ,和Java相反。
接下来就看看Kotlin中的两种静态类的写法,假设我们外部类叫做 Outer ,内部类叫做 Inner
关键在于需要用 inner 关键字来修饰内部类的声明,才能让Kotlin中默认的静态内部类变为非静态的成员内部类
下次有机会说说匿名内部类的写法 = ̄ω ̄=
kotlin内部类与嵌套类
kotlin内部类与嵌套类
简单的说,kotlin嵌套类相当于java的静态内部类,kotlin内部类相当于java普通内部类。
class OutClass
val ocval = "一个外部类变量值"
//嵌套类,相当于Java的静态内部类
class NestedClass
fun test1() = "嵌套内部类函数"
//错误,编译无法通过
//fun test2() = "嵌套内部类引用外部类变量$ocval"
//普通内部类
inner class InnerClass
fun test1() = "内部类引用外部类变量$ocval"
fun main(args: Array<String>)
println(OutClass.NestedClass().test1())
var ic = OutClass().InnerClass()
println(ic.test1())
输出:
以上是关于[Kotlin] 内部类的主要内容,如果未能解决你的问题,请参考以下文章