https://kloudstyle.wordpress.com/2012/09/05/c-%EC%83%81%EC%86%8D%EB%B0%9B%EC%9D%80-%ED%9B%84-new-override-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%98%88%EC%A0%9C/
[C#] 상속받은 후 new , override 차이점 예제
public class BaseClass
{
public virtual void Foo() { Console.WriteLine("BaseClass.Foo"); }
}
public class Overrider : BaseClass
{
public override void Foo() { Console.WriteLine("Overrider.Foo"); }
}
public class Hider : BaseClass
{
public new void Foo() { Console.WriteLine("Hider.Foo"); }
}
static void Main(string[] args)
{
Overrider over = new Overrider();
BaseClass b1 = over;
over.Foo(); // Override.Foo
b1.Foo(); // Override.Foo
Hider h = new Hider();
BaseClass b2 = h;
h.Foo(); // Hider.Foo
b2.Foo(); // BaseClass.Foo
}
override 메소드로 구현하게되면 부모클래스에서 호출하면 자식클래스의 오버라이드함수를 수행한다.
new 메소드로 구현하게되면, 기존의 부모와 별개의 함수이므로, 부모클래스에서 호출하면 부모클래스의 원래 함수를 실행하고, 자식클래스에서는 자식클래스의 함수를 실행한다.
출처: C# 5.0 in a nut shell
반응형
'프로그래밍(Programming) > C#' 카테고리의 다른 글
[C#]정적 생성자(static constructor) (0) | 2015.08.28 |
---|---|
생성자 에서 virtual 함수 호출 (0) | 2015.08.27 |
[C#] 'Checked', 'unchecked' 키워드 (0) | 2015.08.27 |
C# Boxing과 Unboxing 의 내부 처리 (0) | 2015.08.26 |
C# 프로그래밍 가이드 - microsoft (0) | 2015.08.25 |