答えて
あなたはサブクラスを作成する可能性を制限したいとき、それはすべての直接のサブクラスを入れ子にする必要がある意味、これは一例です:だから
sealed class Animal {
class Cow(val name: String) : Animal()
}
//It generates a compilation error
class Horse : Animal() {
}
、sealed
クラスが相続を持つことができませんクラス外。
これは完全ではありません。Kotlin 1.1では制限が解除され、サブクラスは 'sealed'クラスの外に置くことができますが、同じファイルに配置する必要があります。 – hotkey
また、この制限の利益は何かを言及する価値があります。コンパイラは 'when'ステートメントがその枝にすべてのサブタイプをリストアップしていることを確認できるので、' else'ブランチは必要ありません。 – hotkey
> = 1.1のREPLでは、サブクラスはまだ内部にネストされていなければなりません – shanethehat
official docsがこれをカバーします。
封印されたクラスは、継承階層が制限されています。その中で宣言されているか、(Kotlin 1.1以降の)同じファイルにあるクラスのみが封印されたクラスのサブクラスです。
これは、when
式と組み合わせて使用すると便利です。これにより、ブランチが密封されたクラスの可能なサブクラスを徹底的にチェックすることが保証されます。
他の答えは良いですが、重要な点は追加する価値があると思います:密閉されたクラスのサブクラスを拡張するクラスは、必ずしも同じファイルにではなく、どこにでも配置できます。密封されたクラスは、すべてのサブクラスもsealed
でない限り、必ずしも継承階層全体が同じファイル内にあるわけではないので、注意することは重要です。
- 1. kotlinで密封されたクラスを一般化するには?
- 2. Solidityで修飾語は何をしますか?
- 3. メソッドシグネチャで@public修飾語は何を意味しますか?
- 4. Kotlin:密封されたクラスはデータクラスを「含む」ことはできませんか?どうして?
- 5. ARCで導入された新しいタイプ修飾子は何ですか?
- 6. ref修飾語を含むパラメータは正確に何ですか?
- 7. コンパイラは、代表キーワードの密封されたクラスは仮想メソッド
- 8. 修飾された修飾されたポインタを関数に渡すことはできますか?
- 9. 修飾されたdoubleが正しく表示されない
- 10. 'asmlinkage'修飾語は何の意味ですか?
- 11. RTL言語はアンドロイドとリソースの修飾子でサポートされています
- 12. Delphiの「厳密なプライベート」と「保護された」アクセス修飾子の違いは?
- 13. Kotlinで封印されたコンストラクタを参照するには?
- 14. Cの修飾子と修飾子の違いは何ですか?
- 15. 揮発性修飾語はいつ使用しますか?
- 16. HyperlinkEventの修飾語ですか?
- 17. ATGでは、プロモーションの修飾語としてマーカーを使用できますか?
- 18. 封印されたクラスとプライベートクラスの違いは何ですか?
- 19. 修飾されていない-ID
- 20. 封印違反をライブラリから修復するにはどうすればよいですか?封印違反:パッケージorg.lwjgl.openglが封印されています
- 21. KotlinのMoshiカスタム修飾子注釈
- 22. メソッドは保護されていますが、リフレクションによってメソッドの修飾子を取得しました。修飾子はpublicです。 IDEは、Android Studioの
- 23. printfの長さ修飾子フラグのポイントは何ですか?
- 24. regexpのo修飾子は何を意味しますか?
- 25. Dartの最後の修飾子は何をしますか?
- 26. アクセス修飾子エラー - クラスは公開されていますが、
- 27. Kotlinのコンストラクタの引数にプライベート修飾子を追加するときの違いは何ですか?
- 28. Kotlinの封印されたクラスの中のオブジェクト宣言の目的は何ですか? Kotilnのドキュメントで
- 29. .aspxページで作成されたコントロールの既定のアクセス修飾子は何ですか。プライベートか他の何か?
- 30. C#:このキーダウンイベントでは、修飾キー名+非修飾キー名をどのように表示しますか?
てみ[このリンク](https://kotlinlang.org/docs/reference/sealed-classes.html)でこれについての詳細を読むことができます - 'sealed'キーワード、限りクラスクラスのすべてのサブクラスが同じファイルにあり、スーパークラスにネストされていることを確認します。 – josephmbustamante
文書について不明な点は何ですか? – nhaarman