04
23
다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.

 

 

멤버 재정의하기

 - 상속 관계에서 메서드를 재정의 할 때는 virtual과 override키워드를 사용한다.

 - virtual로 선언하지 않은 멤버를 재 정의하려는 경우 new한정자를 사용할 수 있다.

pulbic class MyWidget : BaseWidget
{
    public new void MyMethod()
    {
        // 내용
        base.NormalizeValues(); // 베이스 클래스를 호출하여 상속처럼 사용할 수 도 있다.
    }
}

 

new로 재정의... 할수는 있지만?

 - 개발자로 하여금 클래스 동작의 일관성이 없어지기때문에, 혼란을 초래한다.

 - 베이스 클래스가 사용하고 있는 메서드를 재정의하여 완전히 새로운 베이스 클래스를 만들어야하는 경우 사용하자.

 - 베이스 클래스를 변경할 수 없는 경우(외부 라이브러리를 사용한다거나)에도 사용될 수 있다.

 

결론

 - new 한정자는 특수한 상황에서만 사용해야한다.

 

 

 

 

COMMENT