sealed class
密封类:sealed
用于声明一个密封类。
Enum Class:每个枚举都是枚举类的实例,可以直接使用
Sealed Class:密封类约束的子类只是一个类型,你可以为不同子类定义方法和属性,并对齐动态实例化
密封类,顾名思义就是密封的,定义的子类也必须在密封类中,之所以是枚举类的扩展,是因为除了使用常量定义有限值,还可以用子类灵活定义有限值,比如object定义的单例类,class定义的内部类
密封类通常与表达时一起使用。 由于密封类的子类将自身类型作为一种情况。 因此,密封类中的when表达式涵盖所有情况,从而避免使用else子句。
sealed class MyColor {
class Yellow : MyColor() //这每一个类,你可以看成相当于枚举类的一个常量
class Red : MyColor()
class Black : MyColor()
}
fun evals(color: MyColor) = when (color) { //我们具体需要哪一种
is MyColor.Yellow -> println("yellow")
is MyColor.Red -> println("red")
is MyColor.Black -> println("black")
}
fun main(args: Array<String>) {
evals(MyColor.Black())
}











网友评论