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(); } } |
▶ 실행 결과 일을 하다. 공부하다. |
[C#] 6.2 다형성 - 기반 형식의 변수로 파생한 개체를 참조
[C#] 6.2.4 가상화 virtual, 재정의 override
'언어 자료구조 알고리즘 > Escort C#' 카테고리의 다른 글
[C#] 7.2 프로젝트 설계 - 클래스 다이어그램 (0) | 2016.05.03 |
---|---|
[C#] 7. 프로젝트 - 시나리오 (2) | 2016.05.03 |
[C#] 6.2.6 sealed 키워드를 이용한 봉인 (0) | 2016.05.02 |
[C#] 6.2.5 abstract 키워드를 이용한 추상화 (0) | 2016.05.02 |
[C#] 6.2.4 가상화 virtual, 재정의 override (0) | 2016.05.02 |
[C#] 6.2.2 is 연산자와 as 연산자 (0) | 2016.05.02 |
[C#] 6.2 다형성 - 기반 형식의 변수로 파생한 개체를 참조 (0) | 2016.05.02 |
[C#] 6. 상속과 다형성 - 6.1 상속 (0) | 2016.05.02 |
[C#] 5.3 접근 한정자 (3) | 2016.05.02 |
[C#] 5.2 개체의 멤버와 정적(static) 멤버 (2) | 2016.05.02 |