메소드 숨기기는 파생 클래스에서 기본 클래스의 메서드와 동일한 이름을 사용할 수 있도록 합니다.
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 결과를 얻게 됩니다.