派生クラスで基本クラスと同じシグネチャのメソッドを実装することが出来ますが、このときnewを使うかoverrideを使うかで動きが変わってきます。 結論を先に書いておくと・・・ newはフィールドの型に応じて呼び出しメソッドが決められる。 overrideはインスタンスの型に応じて呼び出しメソッドが決められる。 では、細かく見ていきましょう。 基本クラス(Base)とその派生クラス(Hoge)を作って、それぞれの動きを確認してみます。 まず、こんな感じで実装。 // 基本クラス class Base { public void CallNew() { Console.WriteLine("Base::CallNew"); } public virtual void CallOverride() { Console.WriteLine("Base::CallOverride"); } } /
C# 言語は、異なるライブラリ内の 基底 クラスと派生クラスの間のバージョン管理が進化し、下位互換性を維持できるように設計されています。 つまり、たとえば、派生クラスのメンバーと同じ名前の基底 クラス に新しいメンバーを導入することは、C# で完全にサポートされており、予期しない動作には至りません。 また、クラスは、メソッドが継承されたメソッドをオーバーライドすることを意図しているかどうか、またはメソッドが同様の名前の継承メソッドを非表示にする新しいメソッドであるかどうかを明示的に指定する必要があることを意味します。 C# では、派生クラスには基底クラス メソッドと同じ名前のメソッドを含めることができます。 派生クラスのメソッドの前に 新しい キーワードまたは オーバーライド キーワードがない場合、コンパイラは警告を発行し、メソッドは new キーワードが存在するかのように動作します。 派
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く