簡體   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