对比Java学Kotlin嵌套类和内部类
Posted 陈蒙_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对比Java学Kotlin嵌套类和内部类相关的知识,希望对你有一定的参考价值。
嵌套类
在 Java 中中,有静态嵌套类和非静态嵌套类:
class Outer {
static StaticInner {} // 静态嵌套类
class Inner {} // 非静态嵌套类
}
我们知道 Kotlin 语言中没有 static 关键字,我们可以 Kotlin 的接口或类体中定义嵌套类:
interface OuterInterface {
class InnerClass
interface InnerInterface
}
class OuterClass() {
class Nested() {
fun foo() = 1
}
interface InnerInterace {}
}
其用法等同于 Java 的静态嵌套类,嵌套类无法获取外部类的成员变量和成员方法:
val f = Outer.Nested().foo() // 1
内部类
如果我们想让 Kotlin 的嵌套类获取外部类的成员,可以用 inner 关键字来实现:
class Outer() {
inner class Inner() {
fun foo() = 1
}
}
inner 内部类拥有外部类的引用,可以访问外部类的成员变量和成员函数,其使用方法相当于 Java 的非静态嵌套类:
val i = Outer().Inner().foo() // 1
匿名内部类
我们还可以使用 object 关键字来新建匿名内部类:
class Outer() {
inner class Inner() {
open fun foo() = 1
}
}
val i = object : Outer.Inner() {
override fun foo() = 2
}
以上是关于对比Java学Kotlin嵌套类和内部类的主要内容,如果未能解决你的问题,请参考以下文章