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日