Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man den PHP-Polymorphismus versteht

Wie man den PHP-Polymorphismus versteht

王林
王林Original
2019-10-10 17:51:043736Durchsuche

Wie man den PHP-Polymorphismus versteht

Polymorphismus bedeutet, dass der gleiche Vorgang, die gleiche Funktion oder derselbe Prozess auf mehrere Objekttypen angewendet werden kann und unterschiedliche Ergebnisse erzielt. 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 seine eigene Weise auf eine gemeinsame Nachricht zu reagieren. Polymorphismus erhöht die Flexibilität und Wiederverwendbarkeit der Software.

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, die zwischen verschiedenen Unterklassenobjekten bestehen, abgeschirmt werden können Code erstellen und gemeinsame Programmierungen erstellen, um sie an sich ändernde Anforderungen anzupassen.

2. Polymorphes Anwendungsdesign

Um das Projekt in der Zukunft problemlos erweitern und aktualisieren zu können, ist es normalerweise erforderlich, wiederverwendbare Implementierungen durchzuführen 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:

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

Analyse: Im obigen Programm werden zunächst zwei Mitarbeiterklassen definiert: 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.

Der Maler malt
Die Schreibkraft tippt

Aus dem obigen Programm ist leicht ersichtlich, dass Sie zunächst definieren müssen, wenn Sie den Arbeitsstatus mehrerer Mitarbeiter anzeigen möchten Definieren Sie die Arbeit des Mitarbeiters in der Mitarbeiterklasse und fügen Sie dann eine elseif-Anweisung in die Funktion printworking() ein, 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.

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie man den PHP-Polymorphismus versteht. 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