[C#] 6.2.3 new 키워드로 무효화, base 키워드로 사용

C#에서 파생된 형식에서 기반 형식에 정의된 멤버와 같은 이름의 멤버를 new 키워드를 사용하여 캡슐화하면 기반 형식의 멤버는 무효화됩니다. 이 때는 사용하는 곳의 형식에 따른 멤버가 사용됩니다. 즉, 기반 형식의 변수로 접근하면 기반 형식의 멤버가 사용되고 파생 형식의 변수로 접근하면 파생 형식의 멤버가 사용됩니다.

▶ new 키워드를 이용한 무효화

class Man
{
    internal void Work()
    {
        Console.WriteLine("일을 하다.");
    }
}
class Student : Man
{
    internal new void Work() //new 키워드를 이용하여 Man 형식의 Work메서드 무효화
    {
        Console.WriteLine("공부하다.");
    }
}
class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Work();
        Man man = student;
        man.Work();
    }
}

▶ 실행 결과

공부하다.
일을 하다.

그리고 C#에서는 파생 형식에서 무효화 된 기반 클래스의 멤버를 사용할 수 있게 base 키워드를 제공하고 있습니다. 만약, 파생 형식에서 base 키워드를 통해 멤버를 호출하면 무효화 된 기반 클래스의 멤버가 사용됩니다.

▶ base 키워드로 무효화 멤버 사용

class Man
{
    internal void Work()
    {
        Console.WriteLine("일을 하다.");
    }
}
class Student : Man
{
    internal new void Work() //new 키워드로 기반 형식 Man의 Work 메서드 무효화
    {
        base.Work(); //base 키워드로 무효화 된 Work 메서드 사용
        Console.WriteLine("공부하다.");
    }
}
class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Work();
    }
}

▶ 실행 결과

일을 하다.
공부하다.