6.2.4 가상화 virtual, 재정의 override
new 키워드로 기반 클래스의 멤버를 무효화 할 때는 사용하는 변수 형식의 멤버가 사용됩니다. 이러한 특징은 기반 형식의 변수로 다양한 파생 개체를 참조할 때 실제 개체에 정의된 멤버가 사용되지 않으므로 다형성의 장점을 충분히 사용하지 못합니다.
C#에서는 기반 형식에서 정의한 멤버를 파생 형식에서 재정의하면 변수의 형식이 아닌 개체의 형식의 멤버가 동작하게 virtual 키워드와 override 키워드를 제공합니다. 기반 형식에서 virtual 키워드를 명시하여 멤버를 선언하면 가상 멤버가 됩니다. 이때 파생 형식에서 기반 형식의 가상 멤버를 재정의할 때는 override 키워드를 명시합니다.
▶ virtual로 가상 메서드 선언, override로 재정의
class Man { internal virtual void Work() //virtual 키워드로 가상 메서드 선언 { Console.WriteLine("일을 하다."); } } class Student : Man { internal override void Work() //override로 기반 형식의 가상 메서드 재정의 { Console.WriteLine("공부하다."); } }
class Program { static void Main() { Man man = new Student(); man.Work(); } } |
▶ 실행 결과 공부하다. |
[C#] 6.2 다형성 - 기반 형식의 변수로 파생한 개체를 참조
[C#] 6.2.4 가상화 virtual, 재정의 override
'언어 자료구조 알고리즘 > Escort C#' 카테고리의 다른 글
[C#] 7.2.2 프로젝트 설계 - 시퀀스 다이어그램 (0) | 2016.05.03 |
---|---|
[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#] 무효화 - new 키워드, base 키워드 (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 |