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

WBOY
Freigeben: 2023-05-11 16:00:02
Original
1457 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage