Puisque nous ne pouvons pas instancier une classe abstraite, alors quelle est la nécessité d'avoir des constructeurs dans la classe abstraite?A quoi servent les constructeurs dans les classes abstraites?
Répondre
Les classes abstraites sont conçues pour être étendues, chaque constructeur provenant de l'enfant must perform a call to a constructor from the base class, vous avez donc besoin de constructeurs dans votre classe abstraite.
La classe abstraite est un squelette et n'a donc aucun sens de l'instancier directement puisqu'elle est encore incomplète (les enfants fourniront le reste).
Un exemple:
public abstract class BaseClass
{
private String member;
public BaseClass(String member)
{
this.member = member;
}
... abstract methods...
}
public class ImplementingClass extends BaseClass
{
public ImplementingClass(String member)
{
/* Implementing class must call a constructor from the abstract class */
super(member);
}
... method implementations...
}
Nous pouvons utiliser un constructeur de classe abstraite pour exécuter du code qui est pertinent pour chaque sous-classe. Cette façon d'éviter le code en double
Les classes abstraites peuvent avoir des champs et des méthodes non abstraites (ce qui en fait un évaluateur de classe abstrait plutôt qu'une interface). Les champs doivent probablement être initialisés lorsqu'une classe qui l'étend est instanciée.
Avoir un constructeur dans la classe abstraite vous permet d'appeler super(foo);
pour les initialiser au lieu de le faire directement
http://stackoverflow.com/questions/260666/abstract-class-constructor-in-java –