Kotlin中的嵌套类、内部类、枚举类、密封类、数据类、单例类、伴生对象

在Kotlin中,类可以分为以下几种类型,并使用样例代码进行说明:

  1. 嵌套类(Nested Class):嵌套类是指可以嵌套在其他类中的类。嵌套类不能直接访问外部类的成员。例如,在下面的代码中,"Neted"是一个嵌套类。
kotlin 复制代码
class Nested {
    // 嵌套类
    class Neted {
        fun sayHello() {
            println("hello")
        }
    }
}
  1. 内部类(Inner Class):内部类是指可以使用inner关键字标记的类,以便能够访问外部类的成员。内部类可以访问外部类的属性和方法。例如,在下面的代码中,"Inner"是一个内部类。
kotlin 复制代码
class Nested {
    // 内部类
    inner class Inner() {
        fun sayHello() {
            println("hello name=$name,age=$age")
        }
    }
}
  1. 枚举类(Enum Class):枚举类用于表示一组固定的常量值。每个枚举常量都是枚举类的实例。例如,在下面的代码中,"Week"是一个枚举类。
kotlin 复制代码
enum class Week(val weekName: String) {
    MONDAY("星期一"),
    TUESDAY("星期二"),
    // ...
    SUNDAY("星期日")
}
  1. 密封类(Sealed Class):密封类用于表示受限制的类层次结构,限制其子类的定义。密封类的子类必须定义在同一个文件中。例如,在下面的代码中,"Stark"是一个密封类,它有几个子类("RobStarK"、"SansaStarK"、"AryaStarK"、"BrandonStarK"、"JonSnow")。
kotlin 复制代码
sealed class Stark {
    // 密封类子类
    class RobStarK : Stark() {}
    class SansaStarK : Stark() {}
    class AryaStarK : Stark() {}

    // 嵌套类
    class BrandonStarK() {}
}
  1. 数据类(Data Class):数据类用于表示一些只包含数据的类,通常用于存储和传递数据。数据类自动生成了一些标准方法(如toString()equals()hashCode()等)。例如,在下面的代码中,"Man"是一个数据类。
kotlin 复制代码
data class Man(var manName: String, var manAge: Int) {}
  1. 单例类(Singleton Class):单例类表示在程序运行期间只存在一个实例的类。在Kotlin中,可以使用对象声明(object declaration)来创建单例类。例如,在下面的代码中,"Singleton"是一个单例类。
kotlin 复制代码
object Singleton {
    var singletonName = "单例模式"
    fun sayHello() {
        println("Hello,我是$singletonName")
    }
}
  1. 伴生对象(Companion Object):伴生对象是类的一个特殊对象,可以包含类级别的属性和方法。它类似于Java中的静态成员。在Kotlin中,使用伴生对象来替代Java中的静态变量和方法。例如,在下面的代码中,"Company"类有一个伴生对象。
kotlin 复制代码
class Company {
    companion object Factory {
        fun sayHello() {
            println("伴生对象")
        }
    }
}
相关推荐
AFinalStone16 分钟前
Android 7系统无障碍服务(五)AccessibilityNodeInfo 的构建与查询
android·无障碍服务
今天要早睡_1 小时前
C++ 核心语法速过:命名空间、引用、函数重载与 nullptr 深度解析
android·java·c++
啦啦啦~~~2222 小时前
PC端+安卓端阅读器推荐!开源本地小说阅读器软件,
android·论文阅读·windows·开源软件·福昕阅读器
我命由我123452 小时前
Android Jetpack Compose 开发问题:Unresolved reference ‘Icons‘.
android·java-ee·kotlin·android studio·android jetpack·android-studio·android runtime
爱笑鱼2 小时前
Android 系统启动机制(六):Zygote 创建 App 为什么走 Socket?哪些是源码事实,哪些是架构解释?
android·linux
AI2中文网3 小时前
安卓模拟器启动卡在进度条?两步解决硬件加速冲突
android
IT毕设实战小研3 小时前
基于大数据的DAX40成分股金融新闻情感趋势可视化分析
android·大数据·python·考研·金融·课程设计
Android-Flutter3 小时前
flutter async/await 详解
android·flutter
步行cgn4 小时前
Spring Boot 中的 YAML 完全指南
android·spring boot·firefox
事圆则缓4 小时前
Java 常见数据结构与 Android 使用场景
android·java·数据结构