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修饰符,密封接口跟密封类的作用相同,密封接口的所有实现在编译时都是已知的。