Immer, wenn ich eine Methode einer Basisklasse außer meiner Implementierung dieser Methode überschreibe, habe ich anscheinend 3 Möglichkeiten.Wie "richtig" überschreiben Sie eine Basisklassenmethode?
1) Rufen Sie base.Method() auf, und stellen Sie dann meine Implementierung bereit.
2) meine Implementierung bereitstellen und dann base.Method nennen()
3) Geben Sie einfach meine Implementierung.
In letzter Zeit habe ich bei der Verwendung einer Bibliothek einige Fehler bemerkt, die eingeführt wurden, weil die Methode nicht wie von der Bibliothek erwartet implementiert wurde. Ich bin mir nicht sicher, ob das auf einem Teil der Bibliothek schlecht ist oder etwas in meinem Verständnis falsch ist.
Ich werde ein Beispiel nehmen.
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();
}
}
Meine Frage hier ist, wie könnte ein Kind Klasse wissen (ohne einen Blick auf Basisklassenimplementierung unter), die Ordnung (oder Option) wird von der übergeordneten Klasse erwartet werden? Gibt es eine Möglichkeit, wie Elternklasse einen der drei Alternativen zu allen abgeleiteten Klassen erzwingen kann?
'PostViewManager',' PreViewManager', 'CustomViewManager' erben von' ViewManager'? In diesem Fall sollten Sie den Code bearbeiten. – LaTeX