PHP erweitern können nicht aus der Schnittstelle?

Schreibe ich unten in einer einzigen php-Datei.

<?php
interface people
{
    public function take($s);
}

class engineer extends people
{
    public function take($s){
        echo $s;
    }
}
?>

Den Menschen ist eine Schnittstelle, die der Ingenieur erweitert die Menschen.
Aber wenn ich diesen code ausführen, wird die Fehlermeldung:

Fatal error: Class engineer cannot extend from interface people in E:\php5\Mywwwroot\b.php on line 12

Was ist passiert? Meine PHP version ist 5.4.

  • Klassen, die Schnittstellen implementieren, nicht erweitern.
  • PHP verwendet die Methode, wie Java, um zu verhindern, dass das Diamant-problem - Siehe en.wikipedia.org/wiki/Multiple_inheritance - daher das Schlüsselwort implements
  • Vielen Dank Euch allen. Dumm mich.
  • Nur so nebenbei hier, während das Problem technisch behoben, das Beispiel wäre besser geeignet, Klasse, Vererbung, im Gegensatz zu interface-Implementierung. Das heißt, ein Ingenieur ist eine Art von person, und die meisten Methoden und Funktionen einer person, plus zusätzliche, Ingenieur spezifischen Methoden. Also, du bist nicht die Implementierung einer Schnittstelle, sondern erweitern die "person" Klasse. Ich würde sicherlich nicht so weit gehen, als zu machen, 'person' eine abstrakte Klasse oder irgendetwas, obwohl, wie es scheint vernünftig, die Sie verwenden möchten, können Sie die Basis-Klasse in isolation.
  • Hat meine Antwort Ihre Frage beantworten?
  • zu diesem Zeitpunkt sollten Sie wählen, wenn John Conde beantwortet Ihre Frage und markieren es.

InformationsquelleAutor roast_soul | 2013-09-16
Schreibe einen Kommentar