Qu'est-ce qu'un cours abstrait ?
- Une classe abstraite sert de classe de base qui ne peut pas être instanciée directement. Il est utilisé pour créer une forme généralisée d'une classe, permettant aux sous-classes de fournir des implémentations spécifiques de certaines méthodes.
- Les méthodes abstraites au sein d'une classe abstraite sont déclarées mais n'ont pas d'implémentation dans la classe de base. Des sous-classes sont nécessaires pour fournir des implémentations concrètes.
Quand utiliser les classes abstraites ?
- Utilisez des classes abstraites lorsque vous souhaitez garantir que certaines fonctionnalités sont nécessairement implémentées par des sous-classes.
- Un exemple courant serait une classe de forme géométrique abstraite qui fournit la signature d'une méthode Area(), mais laisse la responsabilité de définir la façon de calculer l'aire aux sous-classes, telles que Triangle et Rectangle.
Implémentation avec l'exemple TwoDShape :
Voir l'exemple dans le package Abstraction
Explication du code :
Classe abstraite TwoDShape :
- Défini comme abstrait car cela n'a pas de sens d'implémenter directement area(). Chaque forme géométrique spécifique (comme un triangle ou un rectangle) doit fournir sa propre implémentation de la façon de calculer l'aire.
- La méthode Area() est déclarée comme abstraite, obligeant les sous-classes à implémenter leur version de cette méthode.
Sous-classes Triangle et Rectangle :
- Les deux sous-classes héritent de TwoDShape et sont nécessaires pour implémenter la méthode Area().
- Triangle calcule l'aire avec la formule base * hauteur / 2.
- Rectangle calcule l'aire avec la formule largeur * hauteur.
Cours AbsShape :
- Démontre le polymorphisme avec des classes abstraites. La méthode Area() est appelée de manière polymorphe et la version correcte de la méthode est exécutée en fonction du type d'objet (Triangle ou Rectangle).
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!
Déclaration: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