SIMPLE

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を継承できるのはCircleSquareだけ。
  • permitsキーワードで明示的に許可。

修飾子の使い分け:

  • final: これ以上継承不可
  • sealed: 指定したクラスのみ継承可
  • non-sealed: 一時的に継承制限解除

🎯 C#(C# 11以降)の場合

C#では sealed は少し違って、「クラスが継承されないことを保証する」という意味です。

sealed class Animal { }
  • Animalは継承できない(サブクラスを作れない)

※ Javaの「sealed」とは用途が異なるので注意!


📝 まとめ表

言語

sealedの意味

Java17+

継承できるクラスを明示的に制限

C#

クラスの継承を完全に禁止

牧野

RPCブログ管理者