override1 Articles

  1. 2006/12/22 오버라이딩의 두가지 방법

하위 클래스에서 상위 클래스의 함수의 동일한 이름을 만드는 것을 오버라이딩 이라고 한다. 이렇게 만들때 오버라이딩 할수 있는 종류에는 두가지가 있다.

new 키워드를 이용한 재정의
virtual,override 키워드를 이용한 재정의

둘의 차이점은 소스로 보자 ^^


using System;
class Base
{
 public void FuncA()
 {
  Console.WriteLine("Base.FuncA");
 }
 public virtual void FuncB()
 {
  Console.WriteLine("Base.FuncB");
 }
}
class Derived: Base
{
 new public void FuncA()
 {
  Console.WriteLine("Derived.FuncA");
 }
 public override void FuncB()
 {
  Console.WriteLine("Derived.FuncB");
 }
}
class Together
{
 public static void Main()
 {
  Derived d = new Derived();
  Base a = d;
  d.FuncA();
  a.FuncA();
  d.FuncB();
  a.FuncB();
 }
}
 



위 프로그램의 결과는

Derived.FuncA
Base.FuncA
Derived.FuncB
Derived.FuncB



new라는 키워드는 하위 클래스에서 상위 클래스의 매서드를 완전히 무시하고 업캐스팅 되었을 때 하위 클래스를 완전히 무시해 버린다. 그리고 virtual과 override는 하위 매서드를 실행해서 클래스의 특징인 다형성을 구현한다.


div>