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(); } }
▶ 실행 결과
일을 하다. 공부하다.