Heim Backend-Entwicklung PHP-Tutorial Vererbung, Polymorphismus und Schnittstellen: drei wichtige objektorientierte Funktionen von PHP

Vererbung, Polymorphismus und Schnittstellen: drei wichtige objektorientierte Funktionen von PHP

May 11, 2023 pm 03:45 PM
接口 继承 多态

PHP ist eine serverseitige Programmiersprache, die seit PHP5 die objektorientierte Programmierung (OOP) unterstützt. Die Kernidee von OOP besteht darin, Daten und Verhalten in Objekten zu kapseln, um die Wartbarkeit und Skalierbarkeit des Programms zu verbessern. In PHP weist die objektorientierte Programmierung drei Hauptmerkmale auf: Vererbung, Polymorphismus und Schnittstellen.

1. Vererbung

Vererbung bedeutet, dass eine Klasse Eigenschaften und Methoden von einer anderen Klasse erben kann. Die geerbte Klasse wird als übergeordnete Klasse oder Basisklasse bezeichnet, und die geerbte Klasse wird als Unterklasse oder abgeleitete Klasse bezeichnet. Unterklassen können die Eigenschaften und Methoden der übergeordneten Klasse erben und diese überschreiben oder erweitern.

Zum Beispiel können wir eine Tierklasse Animal definieren, die über die Attribute $name und $color sowie die Methoden eat() und sleep() verfügt. Dann können wir eine Hundeklasse Dog definieren, die von der Animal-Klasse erbt und eine bark()-Methode hinzufügt:

class Animal {
    protected $name;
    protected $color;
    
    public function eat() {
        echo "$this->name is eating.
";
    }
    
    public function sleep() {
        echo "$this->name is sleeping.
";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "$this->name is barking.
";
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->eat(); // 输出: Fido is eating.
$dog->sleep(); // 输出: Fido is sleeping.
$dog->bark(); // 输出: Fido is barking.
Nach dem Login kopieren

Beachten Sie, dass wir in der übergeordneten Klasse das Schlüsselwort protected verwenden, um die Attribute $name und $color zu definieren. Dies bedeutet, dass auf sie nur innerhalb der übergeordneten und untergeordneten Klassen und nicht direkt außerhalb der Klasse zugegriffen werden kann. In der Unterklasse haben wir das Schlüsselwort public verwendet, um die bark()-Methode zu definieren, was bedeutet, dass auf sie sowohl innerhalb als auch außerhalb der Klasse zugegriffen werden kann.

2. Polymorphismus

Polymorphismus bedeutet, dass ein Objekt in mehreren Formen erscheinen kann. In der objektorientierten Programmierung bedeutet Polymorphismus, dass eine Unterklasse eine übergeordnete Klasse ersetzen kann, ohne die Korrektheit des Programms zu beeinträchtigen.

Zum Beispiel können wir eine Zoo-Klasse Zoo definieren, die über eine show($animal)-Methode zum Anzeigen von Tierinformationen verfügt. Jetzt können wir verschiedene Tierobjekte an die Methode show() übergeben, um Polymorphismus zu erreichen:

class Zoo {
    public function show($animal) {
        $animal->eat();
        $animal->sleep();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";

$zoo = new Zoo();
$zoo->show($dog); // 输出: Fido is eating. Fido is sleeping.
$zoo->show($cat); // 输出: Fluffy is eating. Fluffy is sleeping.
Nach dem Login kopieren

In diesem Beispiel haben wir eine neue Katzenklasse Cat hinzugefügt, die von der Klasse Animal erbt und die Methode eat() überschreibt. Wir können Hunde- und Katzenobjekte an die show()-Methode übergeben, und da sie beide Unterklassen der Animal-Klasse sind, können sie Polymorphismus erreichen.

3. Schnittstelle

Eine Schnittstelle ist eine Spezifikation, die eine Reihe von Methoden definiert, aber keine spezifische Implementierung hat. In PHP kann eine Klasse eine oder mehrere Schnittstellen implementieren, um bestimmte funktionale Anforderungen zu erfüllen.

Zum Beispiel können wir eine Schnittstelle Speakable definieren, die über eine speak()-Methode zur Ausgabe von Tiergeräuschen verfügt. Dann können wir die Klassen dog und cat diese Schnittstelle implementieren lassen:

interface Speakable {
    public function speak();
}

class Dog extends Animal implements Speakable {
    public function bark() {
        echo "$this->name is barking.
";
    }
    
    public function speak() {
        $this->bark();
    }
}

class Cat extends Animal implements Speakable {
    public function meow() {
        echo "$this->name is meowing.
";
    }
    
    public function speak() {
        $this->meow();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->speak(); // 输出: Fido is barking.

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";
$cat->speak(); // 输出: Fluffy is meowing.
Nach dem Login kopieren

In diesem Beispiel definieren wir eine Speakable-Schnittstelle, die über eine speak()-Methode verfügt. Dann lassen wir die Klassen Dog und Cat diese Schnittstelle implementieren und jeweils die Methode speak() implementieren. Auf diese Weise können wir die speak()-Methode für Hunde- und Katzenobjekte aufrufen, ohne deren spezifische Implementierung zu kennen.

Vererbung, Polymorphismus und Schnittstellen sind die drei Hauptmerkmale der objektorientierten PHP-Programmierung. Sie ermöglichen es uns, Code besser zu organisieren und zu verwalten und die Wiederverwendbarkeit und Skalierbarkeit des Codes zu verbessern. Das Verständnis dieser Funktionen kann uns ein tieferes Verständnis des objektorientierten Programmiermodells von PHP vermitteln.

Das obige ist der detaillierte Inhalt vonVererbung, Polymorphismus und Schnittstellen: drei wichtige objektorientierte Funktionen von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet? Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet? May 01, 2024 pm 10:27 PM

Verwenden Sie bei der Funktionsvererbung „Basisklassenzeiger“ und „abgeleitete Klassenzeiger“, um den Vererbungsmechanismus zu verstehen: Wenn der Basisklassenzeiger auf das abgeleitete Klassenobjekt zeigt, wird eine Aufwärtstransformation durchgeführt und nur auf die Mitglieder der Basisklasse zugegriffen. Wenn ein abgeleiteter Klassenzeiger auf ein Basisklassenobjekt zeigt, wird eine Abwärtsumwandlung durchgeführt (unsicher) und muss mit Vorsicht verwendet werden.

Was sind die internen Schnittstellen eines Computer-Motherboards? Empfohlene Einführung in die internen Schnittstellen eines Computer-Motherboards Was sind die internen Schnittstellen eines Computer-Motherboards? Empfohlene Einführung in die internen Schnittstellen eines Computer-Motherboards Mar 12, 2024 pm 04:34 PM

Obwohl der Installationsprozess einfach ist, stoßen Benutzer beim Zusammenbau des Computers häufig auf Probleme mit der Verkabelung. Obwohl sich der Lüfter drehen kann, funktioniert er beim Booten möglicherweise nicht. Es kommt zu einem F1-Fehler „CPUFanError“, der auch dazu führt, dass der CPU-Kühler die Geschwindigkeit nicht intelligent anpassen kann. Lassen Sie uns das allgemeine Wissen über die Schnittstellen CPU_FAN, SYS_FAN, CHA_FAN und CPU_OPT auf der Hauptplatine des Computers teilen. Populäre Wissenschaft über die Schnittstellen CPU_FAN, SYS_FAN, CHA_FAN und CPU_OPT auf der Hauptplatine des Computers 1. CPU_FANCPU_FAN ist eine dedizierte Schnittstelle für den CPU-Kühler und arbeitet mit 12 V

Gängige Programmierparadigmen und Entwurfsmuster in der Go-Sprache Gängige Programmierparadigmen und Entwurfsmuster in der Go-Sprache Mar 04, 2024 pm 06:06 PM

Als moderne und effiziente Programmiersprache verfügt die Go-Sprache über umfangreiche Programmierparadigmen und Entwurfsmuster, die Entwicklern beim Schreiben von qualitativ hochwertigem, wartbarem Code helfen können. In diesem Artikel werden gängige Programmierparadigmen und Entwurfsmuster in der Go-Sprache vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Objektorientierte Programmierung In der Go-Sprache können Sie Strukturen und Methoden verwenden, um objektorientierte Programmierung zu implementieren. Durch die Definition einer Struktur und das Binden von Methoden an die Struktur können die objektorientierten Funktionen der Datenkapselung und Verhaltensbindung erreicht werden. Paketmaini

Virtuelle C++-Funktionstabelle und polymorphe Implementierung, wie man Speicherverschwendung vermeidet Virtuelle C++-Funktionstabelle und polymorphe Implementierung, wie man Speicherverschwendung vermeidet May 31, 2024 pm 07:03 PM

Virtuelle Basisklassen optimieren den Speicheraufwand für virtuelle Tabellen, indem sie die Vererbung von mehreren Basisklassen ermöglichen, ohne zusätzliche virtuelle Tabellen zu erstellen. Im optimierten Code verfügt die Formbasisklasse nicht mehr über eine virtuelle Funktionstabelle, und die Kreis- und Rechteckklassen teilen sich dieselbe virtuelle Funktionstabelle, wodurch der Speicherverbrauch reduziert wird.

Einführung in PHP-Schnittstellen und deren Definition Einführung in PHP-Schnittstellen und deren Definition Mar 23, 2024 am 09:00 AM

Einführung in die PHP-Schnittstelle und wie sie definiert ist. PHP ist eine in der Webentwicklung weit verbreitete Open-Source-Skriptsprache. Sie ist flexibel, einfach und leistungsstark. In PHP ist eine Schnittstelle ein Werkzeug, das gemeinsame Methoden zwischen mehreren Klassen definiert, um Polymorphismus zu erreichen und Code flexibler und wiederverwendbar zu machen. In diesem Artikel werden das Konzept von PHP-Schnittstellen und deren Definition vorgestellt und spezifische Codebeispiele zur Veranschaulichung ihrer Verwendung bereitgestellt. 1. PHP-Schnittstellenkonzept Die Schnittstelle spielt eine wichtige Rolle in der objektorientierten Programmierung und definiert die Klassenanwendung

Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen? Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen? May 02, 2024 am 09:54 AM

Tipps zum Debuggen von Vererbungsfehlern: Stellen Sie sicher, dass die Vererbungsbeziehungen korrekt sind. Verwenden Sie den Debugger, um den Code schrittweise durchzugehen und Variablenwerte zu untersuchen. Stellen Sie sicher, dass Sie den virtuellen Modifikator richtig verwenden. Untersuchen Sie das Problem der Vererbungsdiamanten, das durch versteckte Vererbung verursacht wird. Suchen Sie nach nicht implementierten rein virtuellen Funktionen in abstrakten Klassen.

Wie wirken sich Vererbung und Polymorphismus auf die Klassenkopplung in C++ aus? Wie wirken sich Vererbung und Polymorphismus auf die Klassenkopplung in C++ aus? Jun 05, 2024 pm 02:33 PM

Vererbung und Polymorphismus wirken sich auf die Kopplung von Klassen aus: Vererbung erhöht die Kopplung, da die abgeleitete Klasse von der Basisklasse abhängt. Polymorphismus reduziert die Kopplung, da Objekte über virtuelle Funktionen und Basisklassenzeiger konsistent auf Nachrichten reagieren können. Zu den Best Practices gehören der sparsame Umgang mit der Vererbung, die Definition öffentlicher Schnittstellen, das Vermeiden des Hinzufügens von Datenelementen zu Basisklassen und die Entkopplung von Klassen durch Abhängigkeitsinjektion. Ein praktisches Beispiel, das zeigt, wie Polymorphismus und Abhängigkeitsinjektion verwendet werden, um die Kopplung in einer Bankkontoanwendung zu reduzieren.

Ausführliche Erklärung der C++-Funktionsvererbung: Wie versteht man die Beziehung „is-a' und „has-a' bei der Vererbung? Ausführliche Erklärung der C++-Funktionsvererbung: Wie versteht man die Beziehung „is-a' und „has-a' bei der Vererbung? May 02, 2024 am 08:18 AM

Detaillierte Erläuterung der C++-Funktionsvererbung: Beherrschen Sie die Beziehung zwischen „is-a“ und „has-a“ Was ist Funktionsvererbung? Funktionsvererbung ist eine Technik in C++, die in einer abgeleiteten Klasse definierte Methoden mit in einer Basisklasse definierten Methoden verknüpft. Es ermöglicht abgeleiteten Klassen, auf Methoden der Basisklasse zuzugreifen und diese zu überschreiben, wodurch die Funktionalität der Basisklasse erweitert wird. „Ist-ein“- und „Hat-ein“-Beziehungen Bei der Funktionsvererbung bedeutet die „Ist-ein“-Beziehung, dass die abgeleitete Klasse ein Untertyp der Basisklasse ist, d. h. die abgeleitete Klasse „erbt“ die Merkmale und das Verhalten von die Basisklasse. Die „has-a“-Beziehung bedeutet, dass die abgeleitete Klasse einen Verweis oder Zeiger auf das Basisklassenobjekt enthält, d. h. die abgeleitete Klasse „besitzt“ das Basisklassenobjekt. SyntaxDas Folgende ist die Syntax für die Implementierung der Funktionsvererbung: classDerivedClass:pu

See all articles