当前位置: 首页 > news >正文

Kotlin 嵌套类和内部类

在Kotlin中,嵌套类(Nested Class)和内部类(Inner Class)是两种不同的类,它们在定义和使用上有一些区别。

1.嵌套类(Nested Classes)默认是静态的(即等同于Java中的static),可以有修饰符(如private、protected),不持有外部类的引用,不能访问外部类的成员。
2.内部类(Inner Classes)持有外部类的引用,可以访问外部类的私有成员

使用区别:嵌套类则更多地用于创建独立的、不需要访问外部类成员的类,而内部类经常用于定义在某个类的作用域内,只为外部类服务的类。

代码举例:

class Outer{
    class MyNested{//嵌套类
        fun printMessage(){
          println("这是一个嵌套类")
//        println("外部类属性:${this@Outer.name}")//报错,嵌套类不持有外部类的引用,不能访问外部类成员

        }
    }
    var name = "外部类"
}

class Outer2{
    inner class MyInner{//内部类  用inner修饰类
        fun printMessage(){
          println("这是一个内部类")
          println("外部类属性:${this@Outer2.name}")  //不报错,内部类可以访问外部类成员
    }
    }
    var name="外部类"
}

fun main() {
    //嵌套类
    val nested = Outer.MyNested()
    nested.printMessage()

    //内部类
    val inner = Outer2().MyInner()
    inner.printMessage()

}

相关文章:

  • 链表:struct node *next;为什么用指针,为什么要用自身结构体类型?(通俗易懂)
  • 以太坊基金会换帅,资本市场砸盘
  • 【Java 后端】Restful API 接口
  • dify基础之prompts
  • 【计算机网络】常见tcp/udp对应的应用层协议,端口
  • IO与NIO的区别
  • set 和 map 的左右护卫 【刷题反思】
  • android::hardware::configureRpcThreadpool使用介绍
  • OpenCV计算摄影学(3)CUDA 图像去噪函数fastNlMeansDenoising()
  • Kubernetes (K8S) 高效使用技巧与实践指南
  • PyTorch 的 nn.NLLLoss:负对数似然损失全解析
  • 在 ASP.NET Core 中压缩并减少图像的文件大小
  • lqb官方题单-速成刷题清单(上) - python版
  • AI 实战2 - face -detect
  • Open3D解决SceneWidget加入布局中消失的问题
  • composer 错误汇总
  • 排序算法(3):
  • Dify Workflows MCP Server (TypeScript)设计与实战
  • 人工智能之数学基础:线性代数中矩阵的运算
  • 极简本地体验deepseek大模型教程
  • 专业手机网站制作哪家好/北京优化网站方法
  • 怎么选择顺德网站建设/武汉最新今天的消息
  • 重庆网站seo服务/网站推广软件免费
  • 自己做新闻网站/排名优化系统
  • 网站建设技术招聘/网站统计数据
  • 越秀区政府门户网站建设/网页设计培训学校