
上QQ阅读APP看书,第一时间看更新
2.3.4 密封类
Kotlin的密封类跟Scala的密封类类似。密封类从功能上而言,更类似于枚举,密封类一般与when语句一起使用。
Kotlin的密封类使用sealed关键字来修饰。

执行结果如下:
Hello wangwang Hello chitu Hello tony, You're working as a coder
密封类的特点:
· 密封类是一个抽象类。
· 密封类的所有子类要么在密封类中,要么跟密封类在同一文件中。Kotlin 1.5之后已经不需要这么严格了,在同一个包名下即可。
· 密封类子类的子类可以在任何位置。
· 跟when表达式配合使用时,如果能覆盖所有情况,则无须再添加else语句(对于上述代码Mammal类去掉sealed,则when表达式必须使用else语句)。
顺便提一下,在Kotlin 1.5之后,接口也可以使用Sealed修饰符,密封接口跟密封类的作用相同,密封接口的所有实现在编译时都是已知的。