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

对比Java学Kotlin嵌套类和内部类

对比Java学Kotlin官方文档目录

对比Java学Kotlin类和对象

Kotlin基础(十三) 嵌套类内部类和匿名内部类

深入kotlin - 嵌套类和内部类

深入kotlin - 嵌套类和内部类