Ist dort Weg für eine Klasse zu 'entfernen' Methoden, die es geerbt hat?

Ist es Weg für eine Klasse zu 'entfernen' Methoden, die es geerbt hat?

E. g. wenn ich nicht möchte, dass meine Klasse ToString() Methode kann ich etwas tun, so dass es nicht mehr verfügbar ist?

  • codinghorror.com/blog/2004/08/inherits-nothing.html
  • Dies ist bekannt als die "Refused Bequest" code smell: "eine Klasse, überschreibt eine Methode der Basisklasse in einer solchen Weise, dass der Vertrag von der Basis-Klasse wird nicht geehrt durch die abgeleitete Klasse". en.wikipedia.org/wiki/Code_smell
  • Es gibt keine Möglichkeit zum entfernen einer Methode. Wenn die Methode virtual (markiert mit virtual, abstract oder override), haben Sie Glück, weil der Autor von der Basisklasse erlaubt Ihnen zu entscheiden, das Verhalten der Methode. Man konnte es nichts zu tun, oder werfen eine Ausnahme (aber beachten Sie, dass diese brechen könnte die Basisklasse Erwartung, von Ihrer Methode, so würde es zu Problemen führen, in einigen Fällen). Wenn die Methode ist nicht virtuell, Sie können nicht viel tun. Verstecken Sie es mit einer anderen Methode ist eine sehr schlechte Idee (und nicht entfernen Sie es natürlich).
InformationsquelleAutor CJ7 | 2010-05-06
Schreibe einen Kommentar