Quelle est la différence entre une classe abstraite et une interface en programmation orientée objet?
sobes.tech IA
Réponse de l'IA
Une classe abstraite et une interface en PHP ont les différences suivantes :
-
Classe abstraite peut contenir des méthodes abstraites (sans implémentation), ainsi que des méthodes avec implémentation et des propriétés.
-
Interface ne contient que des déclarations de méthodes (à partir de PHP 8, il est possible d'ajouter des implémentations par défaut, mais c'est une particularité), elle ne contient pas d'état (propriétés).
-
Une classe ne peut hériter que d'une seule classe abstraite, mais peut implémenter plusieurs interfaces.
-
La classe abstraite est utilisée lorsque vous souhaitez définir une implémentation de base et un contrat général, tandis que l'interface est utilisée lorsque vous souhaitez définir uniquement un contrat sans implémentation.
Exemple :
abstract class Animal {
abstract public function makeSound();
public function sleep() {
echo "Dormir";
}
}
interface CanFly {
public function fly();
}
class Bird extends Animal implements CanFly {
public function makeSound() {
echo "Chirp";
}
public function fly() {
echo "Voler";
}
}
Ainsi, la classe abstraite définit une implémentation partielle, l'interface uniquement le contrat.