Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet Polymorphismus in PHP?

Was bedeutet Polymorphismus in PHP?

藏色散人
藏色散人Original
2021-05-08 09:15:012748Durchsuche

Polymorphismus bedeutet in PHP wörtlich „mehrere Formen“, was als mehrere Ausdrucksformen verstanden werden kann, dh „eine externe Schnittstelle, mehrere interne Implementierungsmethoden“ in der objektorientierten Theorie, Polymorphismus bedeutet, dass die gleiche Operation ausgeführt wird erzeugen unterschiedliche Ausführungsergebnisse, wenn sie auf Instanzen verschiedener Klassen angewendet werden.

Was bedeutet Polymorphismus in PHP?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

PHP-Polymorphismus

Polymorphismus bedeutet, dass die gleiche Operation oder Funktion oder derselbe Prozess auf mehrere Objekttypen einwirken kann und unterschiedliche Ergebnisse erzielen. Verschiedene Objekte können beim Empfang derselben Nachricht unterschiedliche Ergebnisse liefern. Dieses Phänomen wird als Polymorphismus bezeichnet.

Polymorphismus ermöglicht es jedem Objekt, auf allgemeine Nachrichten auf eine Weise zu reagieren, die zu ihm passt. Polymorphismus erhöht die Flexibilität und Wiederverwendbarkeit der Software.

In der objektorientierten Softwareentwicklung ist Polymorphismus einer der wichtigsten Teile. Bei der objektorientierten Programmierung geht es nicht nur darum, verwandte Methoden und Daten einfach zu kombinieren, sondern verschiedene Elemente der objektorientierten Programmierung zu verwenden, um verschiedene Situationen im wirklichen Leben klar zu beschreiben. In diesem Abschnitt wird der Polymorphismus in der objektorientierten Programmierung ausführlich erläutert.

1. Was ist Polymorphismus?

Polymorphismus bedeutet wörtlich „mehrere Formen“. Es kann als mehrere Ausdrucksformen verstanden werden, nämlich „eine externe Schnittstelle und mehrere interne Implementierungsmethoden“. In der objektorientierten Theorie lautet die allgemeine Definition von Polymorphismus: Dieselbe Operation führt zu unterschiedlichen Ausführungsergebnissen, wenn sie auf Instanzen verschiedener Klassen angewendet wird. Das heißt, wenn Objekte unterschiedlichen Typs dieselbe Nachricht erhalten, erhalten sie unterschiedliche Ergebnisse.

In der tatsächlichen Anwendungsentwicklung besteht der Hauptgrund für die Verwendung von objektorientiertem Polymorphismus darin, dass verschiedene Unterklassenobjekte als eine übergeordnete Klasse behandelt werden können und die Unterschiede zwischen verschiedenen Unterklassenobjekten abgeschirmt werden können. Schreiben Sie gemeinsamen Code und gemeinsame Programmierung, um sie an Änderungen anzupassen Bedürfnisse.

Empfohlenes Lernen: „PHP-Video-Tutorial

2. Polymorphes Anwendungsdesign

Um das Projekt in Zukunft problemlos erweitern und aktualisieren zu können, ist es in der Regel notwendig, wiederverwendbare Anwendungen zu implementieren Module durch Vererbung für einfache Upgrades. Beim Entwerfen wiederverwendbarer Module ist es notwendig, die Verwendung von Flusskontrollanweisungen so weit wie möglich zu reduzieren. An diesem Punkt können Sie Polymorphismus verwenden, um diese Art von Design zu implementieren.

【Beispiel】 veranschaulicht die Flusskontrollanweisungen, die normalerweise zur Implementierung verschiedener Verarbeitungsarten verwendet werden. Der Code wird unten angezeigt.

class painter{ //定义油漆工类
public function paintbrush(){ //定义油漆工动作
echo "油漆工正在刷漆!\n";
}
}
class typist{ //定义打字员类
public function typed(){ //定义打字员工作
echo "打字员正在打字!\n";
}
}
function printworking($obj){ //定义处理类
if(objinstanceofpainter)//若对象是油漆工类,则显示油漆工动作$obj−>paintbrush();elseif(obj instanceof typist){ //若对象是打字员类,则显示打字员动作
$obj->typed();
}else{ //若非以上类,则显示出错信息
echo "Error: 对象错误!";
}
}
printworking(new painter()); //显示员工工作
printworking(new typist()); //显示员工工作

Analyse: Definieren Sie im obigen Programm zunächst zwei Mitarbeiterklassen: Malerklasse und Schreibkraftklasse. Definieren Sie dann eine Verarbeitungsfunktion. In dieser Funktion wird beurteilt, ob es sich bei dem Mitarbeiter um einen definierten Mitarbeiter handelt, und der Arbeitsstatus des Mitarbeiters wird ausgedruckt. Die Ergebnisse sind unten aufgeführt.

油漆工正在刷漆  
打字员正在打字

Aus dem obigen Programm ist leicht ersichtlich, dass Sie, wenn Sie den Arbeitsstatus mehrerer Mitarbeiter anzeigen möchten, zuerst die Mitarbeiterklasse definieren, die Arbeit des Mitarbeiters in der Mitarbeiterklasse definieren und dann eine elseif-Anweisung hinzufügen müssen die Funktion printworking(), um zu überprüfen, von welcher Mitarbeiterklasse das Objekt eine Instanz ist. Dies ist in der Praxis höchst unerwünscht. Wenn zu diesem Zeitpunkt Polymorphismus verwendet wird, kann dieses Problem leicht gelöst werden.

Sie können zunächst eine übergeordnete Mitarbeiterklasse erstellen. Alle Mitarbeiterklassen erben von der übergeordneten Mitarbeiterklasse und erben alle Methoden und Attribute der übergeordneten Klasse. Erstellen Sie dann eine „ist ein“-Beziehung in der Mitarbeiterklasse, um festzustellen, ob es sich um einen legalen Mitarbeiter handelt.

【Beispiel】Das obige Beispiel wurde unter Verwendung von Polymorphismus umgeschrieben. Der Code wird unten angezeigt.

class employee{//定义员工父类
protected function working(){//定义员工工作,需要在子类的实现
echo "本方法需要在子类中重载!";
}
}
class painter extends employee{//定义油漆工类
public function working(){//实现继承的工作方法
echo "油漆工正在刷漆!\n";
}
}
class typist extends employee{//定义打字员类
public function working(){
echo "打字员正在打字!\n";
}
}
class manager extends employee{//定义经理类
public function working(){
echo "经理正在开会!";
}
}
function printworking($obj){//定义处理方法
if($obj instanceof employee){//若是员工对象,则显示其工作状态
$obj->working();
}else{//否则显示错误信息
echo "Error: 对象错误!";
}
}
printworking(new painter());//显示油漆工的工作
printworking(new typist());//显示打字员的工作
printworking(new manager());//显示经理的工作

Analyse: Definieren Sie im obigen Programm zunächst eine Mitarbeiter-Basisklasse und eine Methode für den Arbeitsstatus des Mitarbeiters. Definieren Sie dann drei Mitarbeiterklassen, die von der Mitarbeiterbasisklasse erben: Maler, Typist und Manager. Definieren Sie dann eine Methode zur Anzeige des Arbeitsstatus des Mitarbeiters. Und erstellen Sie bei dieser Methode eine „Ist-Eins“-Beziehung, um festzustellen, ob es sich um einen legalen Mitarbeiter handelt. Die Ergebnisse sind unten aufgeführt.

油漆工正在刷漆! 
打字员正在打字! 
经理正在开会!

Aus dem obigen Beispiel können wir erkennen, dass Sie unabhängig von der Anzahl der hinzugefügten Mitarbeiterklassen nur die Mitarbeiterklasse und die von der übergeordneten Mitarbeiterklasse geerbten Methoden implementieren müssen. Es besteht keine Notwendigkeit, die Methode „printing()“ zu ändern, die den Arbeitsstatus des Mitarbeiters anzeigt.

Das obige ist der detaillierte Inhalt vonWas bedeutet Polymorphismus in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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