Maison > Java > javaDidacticiel > Les classes abstraites peuvent-elles avoir des constructeurs et quels sont leurs avantages ?

Les classes abstraites peuvent-elles avoir des constructeurs et quels sont leurs avantages ?

Linda Hamilton
Libérer: 2024-12-11 20:20:15
original
519 Les gens l'ont consulté

Can Abstract Classes Have Constructors and What Are Their Benefits?

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;
    }
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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 :

  • Application de contraintes ou d'invariants de classe.
  • Initialisation de champs communs partagés dans toutes les sous-classes.
  • Configuration initiale d'objets complexes sans sacrifier la structure de classe.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal