當你重寫一個方法時,你不應該改變方法的行爲,你只需要專門化它。因此,您必須在重寫的方法中調用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? */
}
}
這完全取決於程序員的見解。代碼在基礎實施調用之前或之後進行。 –
在你的工作流中有一個固定的位置,你的'base.MyMethod()'會被調用嗎?我的意思是,'base.MyMethod()'前後有一些代碼 –