C# 메소드 숨기기 #new 한정자

메소드 숨기기는 파생 클래스에서 기본 클래스의 메서드와 동일한 이름을 사용할 수 있도록 합니다.

 

override 한정자는 기본 클래스의 virtual 메서드를 확장하고, new 한정자는 기본 클래스의 메서드를 숨깁니다.

 

class BaseClass
{
    public void Method1()
    {
        Console.WriteLine("Base - Method1");
    }
}

class DerivedClass : BaseClass
{
    public new void Method1()
    {
        Console.WriteLine("New - Method1");
    }
}

 

이렇게 new한정자를 사용하여

 

DerivedClass derivedClass = new DerivedClass ();
derivedClass.Method1();

 

를 호출하면 New - Method1 라는 결과를 얻을 수 있습니다.

 

여기서 주의해야 할 점은 말 그대로 숨기는 역할이지 아예 사라지거나, 확장되어 사용한다는 뜻이 아닙니다.

 

따라서,

 

BaseClass basedClass = new DerivedClass ();
basedClass.Method1();

 

를 호출하게 되면 기존 BaseClass의 Method1이 호출되어 Base - Method1 결과를 얻게 됩니다.