Javaと情熱のあいだ

カステラとドーナツと珈琲

C#でoverridの挙動を確認

基本的なことだと思うんですが、確認したのでメモ。

サブクラスで実行した場合メソッド内で呼ばれるのは
サブクラスで実装したメソッドになる。

ベースクラス
class Class1
{
    public virtual void PrintText(string str){
        Console.WriteLine(str);
    }

    public void PrintTextToday()
    {
        PrintText(DateTime.Today.ToLongDateString());
    }
}
サブクラス
class Class2 : Class1
{
    public sealed override void PrintText(string str)
    {
        Console.WriteLine(string.Format("test override {0}", str));
    }
}
処理
Class2 c2 = new Class2();
c2.PrintTextToday();
Console.ReadKey();

Class1 c1 = new Class1();
c1.PrintTextToday();
Console.ReadKey();
実行結果
test override 2015年1月26日
2015年1月26日