다음 소스 코드와 같이 new 를 사용한 상속과 virtual 을 이름을 가지고 상속하는 내용에 차이가 있다.
결과가 다음과 같다.

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

 
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();
        d.FuncA();
        d.FuncB();
        Base a = d;
        a.FuncA();
        a.FuncB();
        Base k = new Base();
        k.FuncA();
        k.FuncB();
    }
}



+ Recent posts