繁体   English   中英

密封改性剂在Kotlin中代表什么?

[英]What does the sealed modifier represent in Kotlin?

我对使用sealed修饰符不感到困惑。

它有什么作用?

官方文档对此进行了介绍。

密封类具有严格的继承层次结构:只有在内部声明的类或与它们在同一文件中的类(自Kotlin 1.1起)才可以是密封类的子类。

when表达式结合使用when ,此功能很有用,它可以确保它们的分支穷举检查密封类的可能子类。

此修饰符主要在您想限制创建子类的可能性时使用,这意味着所有直接子类都应嵌套,这是一个示例:

sealed class Animal {
    class Cow(val name: String) : Animal()
}

//It generates a compilation error
class Horse : Animal() {
}

因此, sealed类不能在类外部具有继承者。

其他答案也不错,但是我认为值得补充的重要一点是:扩展密封类子类的类可以放置在任何位置,而不必放在同一文件中。 请注意这一点,因为密封类不一定意味着整个继承层次结构都将在同一个文件中,除非每个子类也都被sealed

您可以在官方文档中了解有关密封类的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM