Kotlin 密封类

密封类用于表示受限制的类层次结构,当一个值只能在一个集合中取值,而不能取其他值时,此时可以使用密封类。在某种意义上,密封类是枚举类的扩展,即枚举类型的值集合。每个枚举常量只存在一个实例,而密封类的一个子类可以有可包含状态的多个实例。

如果想要创建一个密封类必须满足以下两个条件。

  • 密封类必须用sealed关键字来修饰。
  • 由于密封类的构造函数是私有的,因此密封类的子类只能定义在密封类的内部或者同一个文件中。

接下来我们通过一个例子来学习密封类,具体示例代码如下:

sealed class Stark {
    // 罗伯•斯塔克
    class RobStark : Stark(){}
    // 珊莎•斯塔克
    class SansaStark : Stark(){}
    // 艾丽娅•斯塔克
    class AryaStark : Stark(){}
    // 布兰登•斯塔克
    class BrandonStark(){}
}
// 琼恩•雪诺
class JonSnow : Stark(){}

上述代码中,定义了一个密封类Stark,并在该类的内部定义了3个子类,分别是RobStark类、SansaStark类以及AryaStark类。BrandonStark类是该密封类的嵌套类,由于密封类的子类可以不在该密封类中,但是必须与密封类在同一个文件中,因此可知JonSnow类也是该密封类的子类。

需要注意的是,密封类的非直接继承子类可以声明在其他文件中。

Kotlin中密封类与枚举类的区别

  • 密封类适用于子类可数的情况,而枚举类适用于实例可数的情况。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!