Sealed modifier
Peponi │ 11/28/2024 │ 2m
C#
SyntaxKeywordModifier
Sealed modifier
11/28/2024
2m
Peponi
C#
SyntaxKeywordModifier
1. Introduction
sealed
한정자는 상속을 금지하여 추가 확장을 방지하는 기능을 갖고 있다. sealed
한정자를 클래스에 적용하면 다른 클래스에서 해당 클래스를 상속받을 수 없게 하며, 멤버에 적용하는 경우 재정의가 불가능해진다. (sealed
한정자를 사용하더라도, 다른 클래스에서 상속받는 것은 가능하다)
2. Example
public sealed class A {}
public class B : A {} // CS0509: sealed 형식 'A'에서 파생될 수 없습니다.
public class A {}
public sealed class B : A {} // OK
3. Sealed method & property
메서드 또는 속성을 상속받아 재정의할 때, sealed
를 이용하여 상속을 금지할 수 있다.
public class A
{
protected virtual void BaseMethod() { }
protected virtual int BaseProperty { get; set; }
}
public class B : A
{
protected override sealed void BaseMethod() { }
protected override sealed int BaseProperty { get; set; }
}
public class C : B
{
protected override void BaseMethod() { } // CS0239: 'C.BaseMethod()': 상속된 'B.BaseMethod()' 멤버는 봉인되어 있으므로 재정의할 수 없습니다.
protected override int BaseProperty { get; set; } // CS0239: 'C.BaseProperty': 상속된 'B.BaseProperty' 멤버는 봉인되어 있으므로 재정의할 수 없습니다.
}