Passer au contenu principal

Comprendre l'abstraction en POO

L’abstraction est un concept fondamental de la programmation orientée objet qui permet de se concentrer sur ce qu’un objet fait plutôt que sur la manière dont il le fait.

Une classe abstraite est une classe qui ne peut pas être instanciée, mais qui peut être héritée. Elle peut contenir à la fois des méthodes concrètes (avec une implémentation) et des méthodes abstraites (sans implémentation).

Lors de l'héritage d'une classe abstraite, la classe enfant doit implémenter toutes les méthodes abstraites de la classe parente, tout en respectant les règles d'héritage et de compatibilité de signature.

Toute classe contenant au moins une méthode abstraite doit elle-aussi être abstraite. 

<?php

abstract class Animal {
    abstract protected function makeSound(): void;

    public function eat(): void {
        echo "The animal eats.";
    }
}

class Dog extends Animal {
    public function makeSound(): void {
        echo "The dog barks.";
    }
}

$myDog = new Dog();
$myDog->makeSound();  // Outputs: "The dog barks."
$myDog->eat();        // Outputs: "The animal eats."

?>