다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.
멤버 재정의하기
- 상속 관계에서 메서드를 재정의 할 때는 virtual과 override키워드를 사용한다.
- virtual로 선언하지 않은 멤버를 재 정의하려는 경우 new한정자를 사용할 수 있다.
pulbic class MyWidget : BaseWidget
{
public new void MyMethod()
{
// 내용
base.NormalizeValues(); // 베이스 클래스를 호출하여 상속처럼 사용할 수 도 있다.
}
}
new로 재정의... 할수는 있지만?
- 개발자로 하여금 클래스 동작의 일관성이 없어지기때문에, 혼란을 초래한다.
- 베이스 클래스가 사용하고 있는 메서드를 재정의하여 완전히 새로운 베이스 클래스를 만들어야하는 경우 사용하자.
- 베이스 클래스를 변경할 수 없는 경우(외부 라이브러리를 사용한다거나)에도 사용될 수 있다.
결론
- new 한정자는 특수한 상황에서만 사용해야한다.
'🌍 C# Study > 이펙티브 C#' 카테고리의 다른 글
[12] 할당 구문보다 멤버 초기화 구문이 좋다 (0) | 2021.04.25 |
---|---|
[11] .NET 리소스 관리에 대한 이해 (0) | 2021.04.25 |
[09] 박싱과 언박싱을 최소화하라 (0) | 2021.04.23 |
[08] 이벤트 호출 시에는 null 조건 연산자를 사용하라 (0) | 2021.04.23 |
[07] 델리게이트를 이용하여 콜백을 표현하라 (0) | 2021.04.23 |