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.