每當我重寫一個基類的方法,除了我的這個方法的實現,我似乎有3個選擇。如何「正確」重寫基類方法?
1)調用base.Method(),然後提供我的實現。
2)提供我的實現,然後調用base.Method()
3)只需提供我的實現。
最近在使用庫時,我已經意識到由於沒有實現庫所期望的方法而引入的一些錯誤。我不確定圖書館是否有問題,或者我的理解有問題。
我將舉一個例子。
public class ViewManager {
public virtual void Customize(){
PrepareBaseView();
}
}
public class PostViewManager {
public override void Customize(){
base.Customize();
PreparePostView();
}
}
public class PreViewManager {
public override void Customize(){
PreparePreView();
base.Customize();
}
}
public class CustomViewManager {
public override void Customize(){
PrepareCustomView();
}
}
我的問題在這裏怎麼可能一個子類知道(不考慮看看基類實現)的順序(或期權)是由父類的預期? 有沒有一種方法可以讓父類強制三個交替之一到所有的派生類?
'PostViewManager','PreViewManager','CustomViewManager'繼承自'ViewManager'?如果是這樣,你應該編輯代碼。 – LaTeX 2011-02-16 05:53:42