Sobes.tech
Junior — Middle

Hoe verschilt een abstracte klasse van een interface in objectgeoriënteerd programmeren?

sobes.tech AI

Antwoord van AI

Een abstracte klasse en een interface in PHP hebben de volgende verschillen:

  • Abstracte klasse kan zowel abstracte methoden (zonder implementatie) als methoden met implementatie en eigenschappen bevatten.

  • Interface bevat alleen methodedeclaraties (vanaf PHP 8 kunnen standaardimplementaties worden toegevoegd, maar dat is een eigenschap), bevat geen toestand (eigenschappen).

  • Een klasse kan slechts van één abstracte klasse erven, maar kan meerdere interfaces implementeren.

  • De abstracte klasse wordt gebruikt wanneer je een basisimplementatie en een algemeen contract wilt definiëren, terwijl de interface wordt gebruikt wanneer je alleen een contract zonder implementatie wilt definiëren.

Voorbeeld:

abstract class Animal {
    abstract public function makeSound();
    public function sleep() {
        echo "Aan het slapen";
    }
}

interface CanFly {
    public function fly();
}

class Bird extends Animal implements CanFly {
    public function makeSound() {
        echo "Tjilp";
    }
    public function fly() {
        echo "Vliegen";
    }
}

Op deze manier definieert de abstracte klasse een gedeeltelijke implementatie, en de interface alleen het contract.