Gibt es eine Möglichkeit zu machen, eine Methode, die nicht Abstrakt, sondern muss überschrieben werden?

Gibt es eine Möglichkeit zu zwingen, Kind-Klassen zu überschreiben einer nicht-abstrakten Methode der super-Klasse?

Ich muss in der Lage sein zu erstellen, die Instanzen der übergeordneten Klasse, aber wenn eine Klasse erweitert diese Klasse, muss es eine eigene definition von einigen Methoden.

  • Ich bemerkte, gab es einen down-vote. Ich Nie Verstand, aber bitte auch erklären, warum der down-vote.
  • Wenn eine Methode ist nicht Abstrakt und es hat eine bereitgestellte Implementierung. Wenn es hatte vorgesehen, die Umsetzung war aber "abstract" die bereitgestellte Implementierung würde nutzlos sein, wie es wäre, verworfen werden, indem die überschreibung. Also warum sollte Sie das wollen?
  • Ich erwähnte in der Frage, dass ich in der Lage sein müssen, zu erstellen, die Instanzen der übergeordneten Klasse auch. Wie Eltern p=new Parent(); Aber wenn eine Methode in der Übergeordneten Klasse ist Abstrakt, dann kann ich nicht tun.... Das ist der springende Punkt.
  • Immer noch, ohne zu sehen, ein Beispiel ich bin nicht den Kauf der "Unterklassen überschreiben muss dieses" Teil. Was ist, wenn Sie Unterklasse Eltern, etwas zu ändern, die nichts mit dieser Methode?
  • Wie es scheint, Wartung wehe warten, um zu geschehen. In Fällen, in denen Kinder sind, müssen eine andere Implementierung der Methode aus der Basisklasse, die die Definition einer Schnittstelle und das abstrakte Basis-Klasse eine exception zu werfen geeignet ist. Wenn Sie erwarten, dass Ihre konkrete Klasse zu Unterklassen, Ihr design ist wahrscheinlich suboptimal. Siehe das Open-Closed-Prinzip.
  • Sie sind Recht 'Wartung' Sache. Aber immer noch könnte es ein Szenario, in dem Sie gehen zu müssen, dieses Ding.
  • Sprechen in hypotheticals alles möglich macht. Gegeben ein konkretes Szenario, es gibt wahrscheinlich eine elegantere/bessere Weg, es zu tun, die nicht die dies.
  • Sie können die Superklasse " - Methode zum auslösen einer RuntimeException, dann werden Sie zumindest wissen, dass Sie hatte, um es zu überschreiben bei der Prüfung.
  • wie sieht dieser Ungehorsam, der Offen/Geschlossen-Prinzip? Ich weiß sowieso nicht sehen dies nicht so, da die clients der Elternklasse wird in der Lage sein zu halten mit Parent-Klasse. Neu hinzugefügte Klassen wird sich nicht ändern die Quell-oder Binärdateien, die von der Übergeordneten Klasse. Ich weiß nicht, was du redest.
  • scheint, wie Sie don ' T haben eine Antwort. Und verwendet den Begriff Open-Geschlossen-Prinzip nur in der Aufregung zu wissen, ein mehr Begriff. lol
  • Mit der Vererbung schafft eine situation, wo Sie erzwingen eine enge Kopplung zwischen zwei Objekten. Dies wird oft als das "fragile base class problem". Du bist wahrscheinlich zu haben, um ändern Sie die Basisklasse, wenn Sie eine Unterklasse würde gebrochen werden durch eine schlechte Annahme durch die Basis. Josh Bloch spricht über diese in seinen Guten API-design sprechen und wie Java hast es falsch. youtube.com/watch?v=aAb7hSCtvGw#t=2600

InformationsquelleAutor | 2011-10-20
Schreibe einen Kommentar