Hallo pl,
So muß z.B. eine interface-Erweiterung sämtliche Methoden definieren die das Basis-Interface vorschreibt.
Unter Erweiterung verstehst Du extends
, nicht implements
, ja? Aber Interfaces können Methoden erben:
interface IAnimal {
public function move();
}
interface IMammal extends IAnimal {
public function move(); // unnötig!
public function cry();
}
Oder sowas hier?
abstract class Animal implements IAnimal {
public function move() {
echo "Hä? Wie geht das?<br>";
}
}
class Cat extends Animal implements IMammal {
public function move() {
echo "Tapp Tapp Tapp<br>";
}
public function cry() {
echo "Miau<br>";
}
}
An dieser Stelle ist es interessant, ob man IAnimal::move in IMammal wiederholt hat oder nicht. Hat man es getan, dann verlangt PHP vor 5.3 die move-Methode in der Cat-Klasse. Hat man es nicht getan, dann kann Animal::move von Cat geerbt werden. Cat kann aber auch selbst move implementieren und Animal::move überschreiben.
Das älteste Förmchen, das ich im Sandkasten gefunden habe, ist PHP 5.0.4. Auch damit funktionierte das. Es gibt da auch noch PHP 4 Versionen, aber da sich die OOP-Implementierung von PHP 4 auf 5 stark geändert hat, compilierte der obige Code damit nicht und es ist heute auch nicht mehr relevant.
Rolf
sumpsi - posui - clusi