質問: どのように振る舞いを変えずに仮想メソッドを上書きするのですか? メソッドをオーバーライドするときは、メソッドの動作を変更しないでください。したがって、オーバーライドされたメソッドで `base.MyVirtualMethod()`を呼び出して、特殊化コードを追加する必要があります。 しかし、私はいつも `base.MyVirtualMethod()`を呼び出さなければならないと思っています。または別の視点から、仮想メソッドをどのように記述すればよいですか?ユーザーがオーバーライドされたメソッドの最初または最後のものと呼ぶと思いますか? ``` public class Parent { public virtual void MyMethod(){ /* Some code*/ } } public class Child : Parent { public override void MyMethod() { /* Does my code goes here? */ base.MyMethod(); /* Or does my code goes here? */ } } ```
回答: 私は、まず基本メソッドを呼び出して、必要な初期化がすでに行われていることを確認し、実際にはコードが基本的な動作を上書きすることを保証します。 明らかにこれは特定の状況に依存しますが、コードを最初に実行する必要があることがわかっている機会があります。