c#/class

c# sealed class 클래스 종류

AUSTAR 2024. 4. 4. 14:55

 

클래스에 sealed 가 적용된 경우 다른 클래스에서 해당 클래스를 상속받지 못하게 한다.

sealed 가 적용된 클래스에 다른 클래스 상속을 줄수는 있다.

sealed 를 번역하면 봉인된이 되는데 그냥 말그대로 클래스 상속이 불가능 하도록 봉인해버리는 것이다

 

일반적인 사용은 하단과 같이 X를 sealed을 적용한 클래스는 상속이 불가능해진다.

sealed class X
{
    protected virtual void F() { Console.WriteLine("X.F"); }
    protected virtual void F2() { Console.WriteLine("X.F2"); }
}

// 불가능
class Y : X
{
    sealed protected override void F() { Console.WriteLine("Y.F"); }
    protected override void F2() { Console.WriteLine("Y.F2"); }
}

 

하지만 sealed 클래스라고해서 상속을 받지 못하는것은 아니다

class Y
{
    sealed protected override void F() { Console.WriteLine("Y.F"); }
    protected override void F2() { Console.WriteLine("Y.F2"); }
}

// 가능
sealed class X : Y
{
    protected virtual void F() { Console.WriteLine("X.F"); }
    protected virtual void F2() { Console.WriteLine("X.F2"); }
}

 

마소 공식 사이트에서는 다음 두가지 사항을 고려하여 사용을 하도록 제시한다.

1. 파생 클래스가 사용자 클래스의 사용자 지정을 통해 얻을 수 있는 잠재적인 이점
2. 파생 클래스가 사용자 클래스를 수정하여 더 이상 올바르게 또는 예상대로 작동하지 않을 가능성

 

자세한 내용은 마이크로소프트 공식 사이트를 확인해보자

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/sealed

 

sealed 한정자 - C# 참조 - C#

sealed 한정자 - C# 참조

learn.microsoft.com