Noch ein Beispiel:
Du hast ein Interface mit dem Namen IVehicle. Dieses Interface besitzt drei Methoden namens start(), stop() und status().
Wenn du jetzt zwei Klassen ("Car" und "Airplane") hast und beide Klassen dieses Interface implementiert haben, kannst du folgendes machen:
PHP
$vehicles = array();
$vehicles[] = new Car();
$vehicles[] = new Airplane();
foreach($vehicles as $vehicle) { /** @var $vehicle IVehicle */
echo $vehicle->status() . "<br>";
$vehicle->start();
echo $vehicle->status() . "<br>";
$vehicle->stop();
echo $vehicle->status() . "<br>";
echo "<br>";
}
Alles anzeigen
Beide Fahrzeuge werden nun ein- und ausgeschaltet, obwohl diese intern eventuell ganz verschieden sind.
Code
Automotor ausgeschaltet
Automotor eingeschaltet
Automotor ausgeschaltet
Flugzeugmotoren ausgeschaltet
Flugzeugmotoren eingeschaltet
Flugzeugmotoren ausgeschaltet
index.php Pastebin
IVehicle.php Pastebin
Car.php Pastebin
Airplane.php Pastebin
PS: Das hätte auch mit einer abstrakten Klasse so funktioniert, da die Methoden in einem Interface eigentlich nichts anderes sind als "abstrakte" Methoden (da nicht ausprogrammiert)