Frage

Ist es für eine abstrakte Klasse notwendig, mindestens eine abstrakte Methode zu haben?

War es hilfreich?

Lösung

Das Thema dieses Beitrags und der Körper stellen zwei verschiedene Fragen:

  1. Sollte es mindestens ein abstraktes Mitglied haben?
  2. Ist es notwendig, mindestens ein abstraktes Mitglied zu haben?

Die Antwort auf #2 ist definitiv nein.

Die Antwort auf #1 ist subjektiv und eine Frage des Stils. Persönlich würde ich ja sagen. Wenn Ihre Absicht darin besteht, zu verhindern, dass eine Klasse (ohne abstrakte Methoden) instanziiert wird, ist der beste Weg, um dies zu bewältigen, mit a privateprotected Konstruktor, nicht durch markieren abstract.

Andere Tipps

Nein, es ist nicht notwendig. Sie sehen das oft wieder in "Vorlagenmethode" Designmuster wie HttpServlet, wobei jede Methode bereits ein Standardverhalten definiert hat und es frei ist, nur eine (oder mehr) von ihnen anstelle von zu überschreiben alle von ihnen.

In JDK 1.0 war es in der Tat notwendig, mindestens eine abstrakte Methode in einer abstrakten Klasse zu haben. Diese Einschränkung wurde in JDK 1.1 (1997? (Ich bin alt)) und solche Klassen, die der Java -Bibliothek hinzugefügt wurden, wie z. java.awt.event.KeyAdapter.

In C ++ benötigen Sie mindestens eine reine virtuelle Funktion, um eine Unterklasse erforderlich zu machen, und mindestens eine virtuelle Funktion, um der Klasse RTTI hinzuzufügen. Normalerweise ist es sinnvoll, den Destruktor zu verwenden.

Beachten Sie bei Überschreibungen nicht abstrakter Methoden, verwenden Sie @Override ist eine gute Idee. Es gibt nicht nur den Leser an wichtige Informationen darüber, was der Code versucht, sondern entdeckt auch gemeinsame Fehler, bei denen Tippfehler oder falsche Parametertypen die Überschreibung verhindert.

Nein - Sie können eine Klasse zum Zusammenfassung deklarieren, ohne abstrakte Methoden zu haben. Es kann konzeptionell keinen Sinn ergeben, wenn eine Instanz dieser Klasse existiert, oder Sie möchten möglicherweise sicherstellen, dass nur Unterklassen dieser Klasse instanziiert werden können (aus irgendeinem Grund)

Wenn eine Klasse eine hat abstract Modifikator auf seiner Erklärung wird es abstract Klasse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top