第十四节 嵌套类、内部类

1、嵌套类
看java中的一段代码

public class demo {
    String name="张三";
    public static void main(String[] args) {
    }

    class InnerClass{

        public void sayHello()
        {
            System.out.println(name);
        }
    }
    
}

注意在InnerClass中是可以直接访问外部类name的
看下kotlin中


image.png

嵌套类是不能访问外部类的成员的,why?


image.png

因为kotlin中的嵌套类是static的

fun main(args: Array<String>) {

    val innerClass=OutClass.InnerClass()
    innerClass.sayHello()
}

class OutClass{
    var name="张三"
    class InnerClass{
        fun sayHello()
        {
            println("嵌套类")
        }
    }
}

输出:


image.png

2、内部类(关键词inner)


fun main(args: Array<String>) {

    val innerClass=OutClass().InnerClass()
    innerClass.sayHello()
}

class OutClass{
    var name="张三"
    inner class InnerClass{
        fun sayHello()
        {
            println("内部类${name}")
        }
    }
}

输出:


image.png

内部类是可以访问外部类成员的,注意内部类和嵌套类的区别,还有就是如何创建内部类和嵌套类

3、


fun main(args: Array<String>) {

    val innerClass=OutClass().InnerClass()
    innerClass.sayHello()
}

class OutClass{
    var name="张三"
    inner class InnerClass{
        var name="李四"
        fun sayHello()
        {
            println("内部类${name}")
            println("内部类${this.name}")
            println("内部类${this@OutClass.name}")

        }
    }
}

输出:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象编程(OOP) 在前面的章节中,我们学习了Kotlin的语言基础知识、类型系统、集合类以及泛型相关的知识。...
    Tenderness4阅读 9,940评论 1 6
  • 今天整理一下内部类,其中包含了内部类的特殊形式,对比普通类有什么区别和作用,内部类和外围类之间的联系,内部类的扩展...
    _小二_阅读 3,971评论 0 3
  • 转载:https://juejin.im/post/5a903ef96fb9a063435ef0c8 本文将会从以...
    福later阅读 3,043评论 0 3
  • 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有...
    Java架构师Carl阅读 3,184评论 0 3
  • 今天是什么日子 起床:8:00 就寝:02:00 天气:灰色 心情:忧郁 纪念日:黑色星期四 叫我起床的不是闹钟是...
    酷酷的阿彤木阅读 936评论 0 0