对比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嵌套类和内部类的主要内容,如果未能解决你的问题,请参考以下文章