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


반응형

+ Recent posts