Aufruf einer überschriebenen Basismethode in C #

7

Ich war nie wirklich mit dieser Frage beschäftigt: Aber wäre es ein schreckliches Verbrechen, base.SomeMethod () bedingt in einer überschriebenen Methode zu nennen?

Beispiel wie in:

%Vor%

Ich bin mir bewusst, dass dies als schlechte Praxis angesehen werden kann, aber ich habe eine solche Behauptung bisher noch nie gelesen.

    
Ralph Caraveo 27.10.2009, 18:10
quelle

5 Antworten

10

Ich kann mir keinen Grund vorstellen, warum das schlecht von meinem Kopf wäre.

Es wäre viel schlimmer, die Basismethode außer Kraft zu setzen und die Funktionalität der Basismethode in einen bedingten Aufruf zu kopieren, anstatt nur die Basismethode aufzurufen.

    
kemiller2002 27.10.2009, 18:12
quelle
7
%Vor%

Schätze, es hängt vom Kontext ab, aber ich bin mir sicher, dass es die Verwendung gerechtfertigt hätte.

    
leppie 27.10.2009 18:13
quelle
2

Ich mache das ziemlich oft. Jedes Mal, wenn ich etwas "mehr tun" muss, überschreibe ich es und mache die Basismethode (oder umgekehrt)

    
Sergio 27.10.2009 18:14
quelle
1

Ich denke, es ist absolut akzeptabel. Vielleicht möchten Sie das Verhalten einer Basisklassenmethode nur unter bestimmten Umständen außer Kraft setzen oder das Verhalten erweitern, indem Sie die Basismethode aufrufen und dann Ihr eigenes Ding machen.

    
Philip Wallace 27.10.2009 18:15
quelle
1

Klassen sollten für die Vererbung ausgelegt sein :

  
    

Wenn die Basisklasse so gestaltet ist, dass der Aufruf von Basisversionen bestimmter Methoden optional ist, ist es in Ordnung, diese Aufrufe wegzulassen.

         

Wenn die Basisklasse so konzipiert ist, dass Basisversionen aufgerufen werden müssen, ist es nicht in Ordnung, sie wegzulassen.

  

Wenn ich darüber spreche, ob dies eine "gute Praxis" ist, fehlt meiner Meinung nach der Punkt. Die Art und Weise, in der eine Klasse für die Vererbung strukturiert ist, basiert auf ihrem Zweck und Design. Die Entscheidung von ob Sie MAY oder Basisversionen einer Methode aufrufen müssen, ist Teil der öffentlichen Klassen Schnittstelle . in Bezug auf die Vererbung.

Sie können nicht entscheiden, wann es wünschenswert oder nicht wünschenswert ist, beim Überschreiben eine Basisklassenmethode aufzurufen, ohne zu verstehen, wie die Basisklasse entworfen ist und welchen Zweck jede Methode erfüllt.

    
LBushkin 27.10.2009 18:20
quelle

Tags und Links