Maison >Java >javaDidacticiel >Les classes abstraites peuvent-elles avoir des constructeurs et quels sont leurs avantages ?
Les classes abstraites peuvent-elles avoir des constructeurs ?
Une classe abstraite peut en effet avoir un constructeur. Contrairement à la croyance populaire, cette fonctionnalité permet une conception de classe puissante et l'application de contraintes.
Utilisation du constructeur dans les classes abstraites
Considérez l'exemple de classe abstraite suivant :
abstract class Product { int multiplyBy; public Product(int multiplyBy) { this.multiplyBy = multiplyBy; } public int mutiply(int val) { return multiplyBy * val; } }
Dans cet exemple, la classe abstraite Product a un constructeur qui initialise le champ multiplieBy. Les classes concrètes étendant Product peuvent ensuite utiliser ce constructeur pour appliquer des invariants de classe ou contraindre l'initialisation des champs.
Constructeurs de classe concrètes
Les classes concrètes héritant de Product doivent appeler explicitement le constructeur parent. puisqu'il n'y a pas de constructeur par défaut dans la classe abstraite. Voici quelques exemples :
class TimesTwo extends Product { public TimesTwo() { super(2); } } class TimesWhat extends Product { public TimesWhat(int what) { super(what); } }
La classe concrète TimesTwo code en dur la valeur multiplierBy à 2, tandis que TimesWhat permet à l'appelant de la spécifier.
Avantages des constructeurs de classe abstraite
Les constructeurs de classes abstraites fournissent plusieurs avantages :
Remarque : L'invocation explicite du constructeur est requise dans sous-classes, car les constructeurs abstraits n'ont pas d'implémentation par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!