Question

Est-il nécessaire qu'une classe abstraite ait au moins une méthode abstraite?

Était-ce utile?

La solution

Le sujet de ce post et du corps posent deux questions différentes:

  1. Doit-il avoir au moins un membre abstrait?
  2. Est-il nécessaire d'avoir au moins un membre abstrait?

La réponse au # 2 est définitivement non.

La réponse au n ° 1 est subjective et une question de style. Personnellement, je dirais oui. Si votre intention est d'empêcher une classe (sans méthodes abstraites) d'être instanciée, la meilleure façon de gérer cela est avec un privateprotected constructeur, pas en le marquant abstract.

Autres conseils

Non, ce n'est pas nécessaire. Vous voyez cela souvent de retour "Méthode du modèle" modèle de conception, comme HttpServlet, où chaque méthode a déjà un comportement par défaut défini et vous êtes libre de remplacer un seul (ou plusieurs) au lieu de tout d'eux.

Dans JDK 1.0, il était en effet nécessaire d'avoir au moins une méthode abstraite dans une classe abstraite. Cette restriction a été supprimée dans JDK 1.1 (1997? (Je suis ancienne)) et de telles classes ajoutées à la bibliothèque Java, telles que java.awt.event.KeyAdapter.

En C ++, vous avez besoin d'au moins une fonction virtuelle pure pour rendre une sous-classe nécessaire, et au moins une fonction virtuelle pour ajouter RTTI à la classe. En règle générale, il est logique d'utiliser le destructeur.

Remarque lors de la remplacement des méthodes non abstraites, en utilisant @Override est une bonne idée. Il indique non seulement au lecteur des informations importantes sur ce que le code tente de faire, mais repére également les erreurs courantes où les fautes de frappe ou les types de paramètres incorrects empêchent le remplacement.

Non - Vous pouvez déclarer un résumé de classe sans avoir de méthodes abstraites. Cela peut ne pas avoir de sens conceptuellement pour qu'une instance de cette classe existe, ou vous voudrez peut-être vous assurer que seules les sous-classes de cette classe peuvent être instanciées (pour une raison quelconque)

Si une classe a un abstract modificateur sur sa déclaration il devient abstract classer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top