Une classe abstraite peut-elle avoir un constructeur ?
Oui, les classes abstraites peuvent avoir des constructeurs. Les constructeurs dans les classes abstraites permettent l'initialisation de champs communs et l'application d'invariants de classe dans ses sous-classes.
Comment les constructeurs peuvent-ils être utilisés dans les classes abstraites ?
Prenons l'exemple ci-dessous :
abstract class Product { int multiplyBy; public Product(int multiplyBy) { this.multiplyBy = multiplyBy; } public int multiply(int val) { return multiplyBy * val; } } class TimesTwo extends Product { public TimesTwo() { super(2); } } class TimesWhat extends Product { public TimesWhat(int what) { super(what); } }
Ici, la classe abstraite Product définit un constructeur qui initialise le champ multiplierBy. Les classes concrètes TimesTwo et TimesWhat héritent de ce constructeur et fournissent des implémentations ou des valeurs spécifiques pour multiplierBy.
Objectif des constructeurs dans les classes abstraites :
Remarque : Les classes abstraites peuvent avoir des constructeurs par défaut (sans argument) uniquement si toutes les variables d'instance sont finales. Cependant, il est recommandé de fournir explicitement un constructeur dans une classe abstraite pour appliquer les exigences d'initialisation dans les sous-classes.
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!