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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du implementieren Schnittstellen und erweitern Klassen:
extends
ist für eine andere Klasse erweitert.Für Schnittstellen, die Sie verwenden müssen
implements
statt.(Eine Schnittstelle
extend
eine andere Schnittstelle, wenn)An interface can extend another interface, though
Hängt davon ab, was Sie wollen, könnte es sein:
Erweitern zu können, nur eine Klasse/interface und implementieren viele Schnittstellen. Sie können die Schnittstelle erweitern, um eine andere Schnittstelle, z.B. Schnittstelle DieselEngineInterface erstreckt EngineInterface.
Möchte auch zu beachten, Kommentar, jetzt, dass Sie können Klassen-und interface-Hierarchie, müssen Sie wissen, Wann Sie zu verwenden sind.