Ich erinnere mich, dass es in einem Interview eine Frage gab, ob PHP Mehrfachvererbung unterstützt?
Antwort: Nein, nur Einzelvererbung wird unterstützt.
Wie implementiert man eine Mehrfachvererbung?
Antwort: Es kann über eine Schnittstelle oder ein Merkmal implementiert werden. (Empfohlenes Lernen: PHP-Programmierung vom Anfänger bis zum Experten)
Warum denken Sie an dieses Problem? Denn wenn eine Klasse mehrere Schnittstellen erbt, haben sie die gleichen Attribute und Methoden Auf Methoden oder Eigenschaften wird verwiesen, und wer wird überschrieben?
Zusammenfassung:
1. Verwenden Sie die Schnittstelle, um zu deklarieren, dass die Klasse nicht instanziiert werden kann, die Attribute Konstanten sein müssen und die Methode keinen Methodenkörper haben darf
2. Die durch das Merkmal deklarierte Klasse wird durch Verwendung eingeführt und überschreibt dieselben Attribute und Methoden der übergeordneten Klasse oben in der Reihenfolge
Was ist die Schnittstelle?
Mithilfe einer Schnittstelle können Sie angeben, welche Methoden eine Klasse implementieren muss, Sie müssen jedoch nicht den spezifischen Inhalt dieser Methoden definieren.
Die Schnittstelle wird über das Schlüsselwort interface definiert, genau wie die Definition einer Standardklasse, aber alle darin definierten Methoden sind leer.
Alle in der Schnittstelle definierten Methoden müssen öffentlich sein. Dies ist eine Eigenschaft der Schnittstelle.
Was ist Trait?
Es sieht sowohl wie eine Klasse als auch wie eine Schnittstelle aus, ist aber eigentlich keines von beiden. Trait kann als teilweise Implementierung davon betrachtet werden
ist eine Klasse und kann in eine oder mehrere vorhandene PHP-Klassen eingemischt werden. Sie hat zwei Funktionen: anzugeben, was die Klasse tun kann, und eine modulare Implementierung bereitzustellen.
Trait ist eine Code-Wiederverwendungstechnologie, die einen flexiblen Code-Wiederverwendungsmechanismus für die Einzelvererbungsbeschränkung von PHP bietet.
Trait reduziert die Einschränkungen einzelner Vererbungssprachen und ermöglicht Entwicklern die freie Wiederverwendung von Methoden in unabhängigen Klassen innerhalb verschiedener Hierarchien. Die Semantik der Kombination von Trait und Class definiert eine Möglichkeit, die Komplexität zu reduzieren und typische Probleme zu vermeiden zu traditionellen Mehrfachvererbungs- und Mixin-Klassen.
Eigenschaften ähneln Klassen, sind jedoch nur darauf ausgelegt, Funktionalität auf feinkörnige und konsistente Weise zu kombinieren. Kann nicht durch das Merkmal selbst instanziiert werden. Es fügt der traditionellen Vererbung eine Kombination horizontaler Funktionen hinzu; das heißt, es ist keine Vererbung zwischen mehreren Klassen in einer Anwendung erforderlich.
Priorität
Von der Basisklasse geerbte Mitglieder werden durch von der Eigenschaft eingefügte Mitglieder überschrieben. Die Rangfolge besteht darin, dass Mitglieder der aktuellen Klasse die Methoden des Merkmals überschreiben und das Merkmal die geerbten Methoden überschreibt.
class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello();
Listen Sie mehrere Merkmale in der Use-Anweisung durch Kommas getrennt auf, und sie können alle in eine Klasse eingefügt werden.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Mehrfachvererbung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!