목표
- sealed(봉인) 한정자에 대해 알아보자
강의시간에 들었던 sealed 키워드의 첫인상
sealed
- 클래스에 sealed 한정자가 사용된 경우, 다른 클래스가 해당 클래스를 상속하지 못하도록 한다.
- 주로 상수를 정의한 클래스거나 파라미터 클래스 등에 사용된다.
- java에서 class에 final 붙이는 것과 비교되곤 하는데, 나도 그게 그거인 것 같다.
sealed class A
{
public void doSomthing()
{
//...
}
}
class B : A // 컴파일 오류 발생
{
}
- 또는 파생형 클래스에서 재정의한 메서드에 sealed를 사용하면, 이후 파생형 클래스를 상속 받은 클래스에서 해당 메서드를 재정의하지 못하게 할 수 있다.
class A
{
public virtual void DoSomething();
}
class B : A
{
sealed public override void DoSomething()
{
}
}
class C : B
{
public override void DoSomething() // 컴파일 오류 발생
{
}
}
sealed 이점
- 위 예시와 같이 sealed를 사용하면 재정의하거나 상속하지 말아야 하는 부분임을 명시적으로 표현할 수 있다.
- 또 C 클래스에 DoSomething이 없다는 것을 명시적으로 표현해 줌으로써, 성능 향상에 도움이 된다.
sealed 단점
- 보통은 sealed로 성능향상을?!? 이라는 생각에서 구현하게 되는데..
- 막상 봉인으로 구현할만한 꺼리를 찾기 힘들다.
- 봉인으로만 해결되는 경우라면 interface를 공통으로 뽑지 못한 설계 실패인 경우일 수 있다.
- sealed 키워드를 모르는 경우가 종종 있어서.. 힘들다.
'프로그래밍 > Unity C#' 카테고리의 다른 글
[Unity] Tutorial 06 - Intermediate Scripting (Method Hiding) (0) | 2020.01.17 |
---|---|
[Unity] Tutorial 06 - Intermediate Scripting (Access Modifiers) (0) | 2020.01.17 |
[Unity] Tutorial 06 - Intermediate Scripting (Interface) (0) | 2020.01.17 |
[Unity] Tutorial 06 - Intermediate Scripting (Virtual) (0) | 2020.01.17 |
[Unity] Tutorial 06 - Intermediate Scripting (Abstraction) (0) | 2020.01.17 |