🌍 C# Study/이펙티브 C#
[10] 베이스 클래스가 업그레이드된 경우에만 new 한정자를 사용하라
맨텀
2021. 4. 23. 19:01
다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.
멤버 재정의하기
- 상속 관계에서 메서드를 재정의 할 때는 virtual과 override키워드를 사용한다.
- virtual로 선언하지 않은 멤버를 재 정의하려는 경우 new한정자를 사용할 수 있다.
pulbic class MyWidget : BaseWidget
{
public new void MyMethod()
{
// 내용
base.NormalizeValues(); // 베이스 클래스를 호출하여 상속처럼 사용할 수 도 있다.
}
}
new로 재정의... 할수는 있지만?
- 개발자로 하여금 클래스 동작의 일관성이 없어지기때문에, 혼란을 초래한다.
- 베이스 클래스가 사용하고 있는 메서드를 재정의하여 완전히 새로운 베이스 클래스를 만들어야하는 경우 사용하자.
- 베이스 클래스를 변경할 수 없는 경우(외부 라이브러리를 사용한다거나)에도 사용될 수 있다.
결론
- new 한정자는 특수한 상황에서만 사용해야한다.