728x90
# sealed
클래스에 붙은 한정자 sealed는 다른 클래스가 상속 할 수 없습니다.
public class A{}
public sealed class B : A {}
public class C : B {} // 에러 발생
클래스 B는 A를 상속할 수 있습니다.
클래스 C는 sealed 한정자가 붙은 B를 상속할 수 없습니다.
또한 가상 함수도 봉인하여 재정의할 수 없게 할 수 있습니다.
class A{
protected virtual void F() {Consol.WriteLine("this is F() with A"); }
}
class B : A{
sealed protected override void F() {Consol.WriteLine("this is F() with B"); }
}
class C : B{
protected override void F() {Consol.WriteLine("this is F() with C"); } // 에러 발생
}
클래스 C는 함수 F()를 재정의할 수 없습니다.
* 클래스 A에서 virtual로 선언하지 않으면 파생 클래스가 재정의할 수 없습니다.
# 기타
* 추상클래스는 구현을 제공하는 클래스에 상속되어야 하므로
abstract 와 sealed를 함께 사용하면 에러가 발생합니다.
* 즉, 봉인 클래스는 부모 클래스가 될 수 없습니다.
* 구조체는 암시적으로 sealed 된 것으로 상속할 수 없습니다.
728x90
'Lang > C#' 카테고리의 다른 글
[C#] out var 파라미터 (0) | 2022.12.20 |
---|---|
[C#] 자주 사용하는 문자열 관련 함수 (0) | 2022.12.08 |