Sealedクラスとは
とあるグループでJava17, C#11より採用されているsealedクラスについて教わったので備忘録。 sealedクラスは、あるクラスの継承先を限定するための仕組み。 簡単に言うと、「このクラスを継承できるのは、特定のクラスだけ」と明示的に制御するためのもの。

🔧 主な用途
- 設計の意図を明示する(外部に継承されない)
☕ Java(17以降)の場合
public sealed class Shape
permits Circle, Square {}
public final class Circle extends Shape {}
public final class Square extends Shape {}
- Shapeを継承できるのはCircleとSquareだけ。
- permitsキーワードで明示的に許可。
修飾子の使い分け:
- final: これ以上継承不可
- sealed: 指定したクラスのみ継承可
- non-sealed: 一時的に継承制限解除
🎯 C#(C# 11以降)の場合
C#では sealed は少し違って、「クラスが継承されないことを保証する」という意味です。
sealed class Animal { }
- Animalは継承できない(サブクラスを作れない)
※ Javaの「sealed」とは用途が異なるので注意!
📝 まとめ表
言語 | sealedの意味 |
---|---|
Java17+ | 継承できるクラスを明示的に制限 |
C# | クラスの継承を完全に禁止 |

牧野
RPCブログ管理者