sealed class
sealed class 는 상속을 막는 클래스이다
sealed 로 선언된 클래스는 다른 클래스가 상속받을 수 없다.
문법
sealed class 클래스이름
{
// 멤버들...
}
sealed 키워드는 클래스를 봉인 ( seal ) 한다는 뜻이다
주로 더 이상 확장하거나 재정의되면 안 되는 클래스를 만들 때 사용한다.
▼예시 코드
sealed class Animal
{
public void Speak()
{
Console.WriteLine("Animal sound");
}
}
// 오류 발생: sealed 클래스는 상속 불가
class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Bow-wow");
}
}
위 코드에서 Dog : Animal 부분이 오류
Animal 이 sealed 로 선언되었기 때문에 다른 클래스가 상속할 수 없다.
활용
sealed 클래스는 주로 다음과 같은 상황이 활용한다
- 보안 또는 안정성 이유로 상속 금지
└ System.String , System.Math 등 .NET 내장 클래스들도 sealed - 클래스의 동작을 고정하고, 예측 가능한 형태로 유지하고 싶을 때
- 성능 최적화 : JIT 컴파일러가 sealed 클래스를 더 빠르게 최적화 할 수 있다
주의할 점
- sealed 클래스는 상속은 안되지만, 인스턴스는 생성 가능하다
- sealed 는 class 뿐만 아니라 override 된 메서드에서도 사용할 수 있다
└ 이 경우 , 해당 메서드를 더 이상 하위 클래스에서 재정의하지 못하게 한다
class Base
{
public virtual void Run() { Console.WriteLine("Base Run"); }
}
class Child : Base
{
public sealed override void Run() { Console.WriteLine("Child Run"); }
}
class SubChild : Child
{
// 오류: Run()은 sealed 되었으므로 재정의 불가
public override void Run() { Console.WriteLine("SubChild Run"); }
}
정리
sealed 클래스는 상속의 끝을 의미한다
더 이상 파생 클래스가 만들어지지 않도록 막아, 안정성과 예측 가능성을 높여준다
'⭐C Sharp > 11. 객체 지향' 카테고리의 다른 글
| 불변 ( Immutable ) (0) | 2025.11.14 |
|---|---|
| virtual 과 override (0) | 2025.10.08 |
| readonly (0) | 2025.10.02 |
| 상속 ( OOP ) (0) | 2025.09.28 |
| 추상 클래스 ( Abstract Class ) (0) | 2025.09.28 |