Inhaltsverzeichnis
Ziele dieses Artikels:
Da es in einer Schnittstelle viele Methodenimplementierungen geben kann, sind die spezifischen Implementierungen der in der Schnittstelle definierten Methoden vielfältig. Diese Funktion wird als „
ist um zu ermöglichen, dass eine Schnittstelle unterschiedliche Implementierungen hat, wodurch der Code für die reale Welt relevanter wird. Dieser Ansatz verkürzt den Abstand zwischen dem Code und der realen Welt und ermöglicht es Entwicklern, einige komplexe Geschäftslogiken bequemer in der Implementierung zu implementieren.
Tatsächlich tritt in diesem Verwendungsszenario dieses Phänomen auf, sobald wir uns für die Verwendung einer Schnittstelle entscheiden. Denn sobald eine Schnittstelle unterschiedliche Implementierungsklassen hat, tritt dieses Phänomen auf wird im Grunde passieren, weil wir oft hoffen, dass eine oder mehrere Methoden in einer Schnittstelle unterschiedliche spezifische Implementierungen haben können
Zusammenfassung:
Ein alter Mann vom Land, Xiao Liu, zog jeden Morgen 5 Hühner und 5 Hunde auf. Er würde pünktlich um 6 Uhr aufstehen, Brei kochen, und nachdem er Brei gegessen hat, wird er zwei kleine Eimer mit Futter tragen, um die Hühner und Enten zu füttern, zum Hühnerstall gehen und einen der Eimer Reis einschenken in den Hühnertrog, und dann zur Hundehütte gehen. Daneben schüttete er den restlichen Eimer mit Futterresten in den Hundetrog
Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erläuterung des objektorientierten PHP-Polymorphismus (Codebeispiel)

Detaillierte Erläuterung des objektorientierten PHP-Polymorphismus (Codebeispiel)

May 26, 2020 pm 03:46 PM
面向对象

Ziele dieses Artikels:

Die Definition von Polymorphismus verstehen

Die Rolle des Polymorphismus verstehen

4. Beherrschen Sie die spezifische Implementierung von Polymorphismus

Wir folgen weiterhin dem vorherigen konsistenten Denken und lernen durch die 3W1H-Methode. Lassen Sie uns also zunächst verstehen

(1) Polymorphismus verstehen Die Definition von

Da es in einer Schnittstelle viele Methodenimplementierungen geben kann, sind die spezifischen Implementierungen der in der Schnittstelle definierten Methoden vielfältig. Diese Funktion wird als „

Polymorphismus

bezeichnet. Beispielsweise verfügt die Schnittstelle A über zwei Implementierungen, B und C. B und C können unterschiedliche Methoden haben, die in A definiert sind. Dieses Phänomen ist Polymorphismus

(2). Verstehen Sie, dass Polymorphismus die Rolle von

ist um zu ermöglichen, dass eine Schnittstelle unterschiedliche Implementierungen hat, wodurch der Code für die reale Welt relevanter wird. Dieser Ansatz verkürzt den Abstand zwischen dem Code und der realen Welt und ermöglicht es Entwicklern, einige komplexe Geschäftslogiken bequemer in der Implementierung zu implementieren.

(3) Verstehen Sie die Verwendungsszenarien des Polymorphismus

Tatsächlich tritt in diesem Verwendungsszenario dieses Phänomen auf, sobald wir uns für die Verwendung einer Schnittstelle entscheiden. Denn sobald eine Schnittstelle unterschiedliche Implementierungsklassen hat, tritt dieses Phänomen auf wird im Grunde passieren, weil wir oft hoffen, dass eine oder mehrere Methoden in einer Schnittstelle unterschiedliche spezifische Implementierungen haben können

-Beispielsweise hat jedes Tier seine eigene Art zu fressen. Ratten und Katzen fressen direkt ohne an Hygiene zu denken, also waschen sie das Essen nicht vor dem Essen. Aber Menschen sind fortgeschrittene Tiere, also achten sie auf grundlegende Hygiene (außer bei Geisteskranken), waschen sich vor dem Essen und urteilen, dass einige Dinge so sein müssen Und aufgrund kultureller Unterschiede essen die Menschen auch auf unterschiedliche Weise. Beispielsweise essen Inder mit den Händen, während Chinesen mit Stäbchen essen, und es gibt unterschiedliche Arten des Essens Dasselbe gilt für viele andere Dinge, daher ist das Phänomen des Polymorphismus auch sehr verbreitet, und wir schreiben Code mit objektorientierter Programmierung, sodass es unvermeidlich ist, dass wir auch auf „Polymorphismus“ stoßen Um unseren Code für die reale Welt relevanter zu machen, müssen wir auch „Polymorphismus“ verwenden

(4) und die spezifische Implementierung des Polymorphismus beherrschen

Zusammenfassung:


1. Die Definition von Polymorphismus ist, dass jede Schnittstelle mehrere verschiedene Implementierungen haben kann

Jede Zusammenfassung wird durch Übung erhalten. Jetzt verwenden wir Übung, um die Zusammenfassung zu demonstrieren, was das Verständnis fördern und jede Zusammenfassung erstellen kann verständlich. Es ist klarer und intuitiver

(5), spezifischer Code

1. Praktische Ziele:

1. Die Definition von Polymorphismus ist, dass jede Schnittstelle mehrere verschiedene Implementierungen haben kann

<?php
//定义吃的接口
interface Eat{
    public function eat();
}
//定义猫的类
class Cat implements Eat{
    public function eat(){
        echo "我是猫,抓到喜欢的老鼠,直接吃<br/>";
    }
}
//定义人
class Human implements Eat{
    public function eat(){
        echo "我是人,吃东西之前,都会洗一下再吃,因为我要讲究基本的卫生<br/>";
    }
}

function Eat( $obj ){
    if( $obj instanceof Eat ){
        $obj->eat();
    }else{
        echo "该对象没有实现Eat的方法<br/>";
    }
}
$cat = new Cat();
$zs = new Human();
//这行代码看出,一个吃的方法,传递不同的具体实现,结果就是可以有不同的实现,这就是多态
Eat($cat);
Eat($zs);
?>
Nach dem Login kopieren

Das Ergebnis der Operation ist:

Ich bin eine Katze, die ich mag. Ich werde es direkt essen

Ich bin ein Mensch, ich wasche mich vor dem Essen, weil ich auf grundlegende Hygiene achten muss

(6) Wenden Sie an, was Sie lernen


Frage: Mit objektorientierter Programmierung simuliert der Code das Konzept des Polymorphismus

Ein alter Mann vom Land, Xiao Liu, zog jeden Morgen 5 Hühner und 5 Hunde auf. Er würde pünktlich um 6 Uhr aufstehen, Brei kochen, und nachdem er Brei gegessen hat, wird er zwei kleine Eimer mit Futter tragen, um die Hühner und Enten zu füttern, zum Hühnerstall gehen und einen der Eimer Reis einschenken in den Hühnertrog, und dann zur Hundehütte gehen. Daneben schüttete er den restlichen Eimer mit Futterresten in den Hundetrog

Ideenanalyse:

1 Darin sind Alter Mann, Huhn, Hund, Essen, also gibt es mindestens diese 4 Kategorien

2. Objektattributanalyse: (kombiniert mit bestimmten Szenen + realer Welt)

Alter Mann: Name

Hühner: Anzahl

Hunde: Anzahl

Futter: Name

3. Objektmethodenanalyse: (Kombiniert mit spezifischen Szenarien + realer Welt )

Alter Mann: aufstehen, Brei kochen, essen (Brei essen), füttern

Huhn: essen (zum Essen Reis picken)

Hund: essen (Knochen essen)

Essen: Legen Sie den Namen des Lebensmittels fest

4. Basierend auf der obigen Analyse haben wir herausgefunden, dass drei der Objekte Essgewohnheiten haben, diese jedoch auf unterschiedliche Weise des Essens, damit wir dies veröffentlichen können Die Methode wird extrahiert und in eine Schnittstelle umgewandelt, und dann werden diese drei Klassen separat implementiert

Der spezifische Implementierungscode lautet wie folgt:

<?php
//定义吃的接口
interface Eat{
    public function eat($food);
}
//定义食物
class Food{
    public $name = "";
    public function __construct( $name ){
        $this->name = $name;
    }
}

//定义人
class Human implements Eat{
    public $name = "";
    public function __construct( $name ){
        $this->name = $name;
    }
    //起床
    public function wakeup(){
        echo $this->name."起床了<br/>";
    }
    //煮稀饭
    public function cook($food){
        echo $this->name."煮".$food->name."了<br/>";
    }
    public function eat($food){
        echo $this->name."吃了".$food->name."<br/>";
    }
    //喂食
    function startFeed( $obj,$food ){
        if( $obj instanceof Eat ){
            $obj->eat($food);
        }else{
            echo "该对象没有实现Eat的方法<br/>";
        }
    }

    public function feed($obj, $food){
        $this->startFeed( $obj,$food );
    }
}
//定义鸡的类
class Chiken implements Eat{
    public $count = 5;
    public function eat($food){
        echo $this->count."只小鸡们,都吃了".$food->name."<br/>";
    }
}
//定义狗的类
class Dog implements Eat{
    public $count = 5;
    public function eat($food){
        echo $this->count."只小狗们,都吃了".$food->name."<br/>";
    }
}

//创建对象
$xiaoliu = new Human("小刘");
$chikens = new Chiken();
$dogs = new Dog();
//创建食物
$xfFood = new Food("稀饭");
$seedsFood = new Food("米");
$mealFood = new Food("残羹剩饭");
//老人起床
$xiaoliu->wakeup();
//老人煮稀饭
$xiaoliu->cook($xfFood);
//老人吃稀饭
$xiaoliu->eat( $xfFood );
//老人喂食开始
$xiaoliu->feed($chikens,$seedsFood);//给小鸡喂食
$xiaoliu->feed($dogs,$mealFood);//给小狗喂食

?>
Nach dem Login kopieren

Der Lauf Ergebnis ist:

Xiao Liu stand auf

Xiao Liu kochte Brei
Xiao Liu aß Brei

Die 5 Hühner aßen alle Reis
Die 5 Welpen aßen alle die Reste

(7) Zusammenfassung

1. In diesem Artikel geht es hauptsächlich um die Definition und Funktion von Polymorphismus sowie die spezifische Implementierung

Ich hoffe, dieser Artikel kann Ihnen helfen, vielen Dank! ! !

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des objektorientierten PHP-Polymorphismus (Codebeispiel). 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)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate 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)

So implementieren Sie objektorientierte ereignisgesteuerte Programmierung mithilfe der Go-Sprache So implementieren Sie objektorientierte ereignisgesteuerte Programmierung mithilfe der Go-Sprache Jul 20, 2023 pm 10:36 PM

So verwenden Sie die Go-Sprache zum Implementieren der objektorientierten ereignisgesteuerten Programmierung. Einführung: Das objektorientierte Programmierparadigma wird häufig in der Softwareentwicklung verwendet. Die ereignisgesteuerte Programmierung ist ein gängiges Programmiermodell, das den Programmfluss durch Auslösen und Verarbeiten von realisiert Ereignisse. In diesem Artikel wird die Verwendung der Go-Sprache zur Implementierung objektorientierter ereignisgesteuerter Programmierung vorgestellt und Codebeispiele bereitgestellt. 1. Das Konzept der ereignisgesteuerten Programmierung Die ereignisgesteuerte Programmierung ist ein auf Ereignissen und Nachrichten basierendes Programmiermodell, das die Ablaufsteuerung des Programms auf das Auslösen und Verarbeiten von Ereignissen überträgt. in ereignisgesteuert

Welche Bedeutung hat die Annotation @JsonIdentityInfo mit Jackson in Java? Welche Bedeutung hat die Annotation @JsonIdentityInfo mit Jackson in Java? Sep 23, 2023 am 09:37 AM

Die Annotation @JsonIdentityInfo wird verwendet, wenn ein Objekt in der Jackson-Bibliothek eine Eltern-Kind-Beziehung hat. Die Annotation @JsonIdentityInfo wird verwendet, um die Objektidentität während der Serialisierung und Deserialisierung anzugeben. ObjectIdGenerators.PropertyGenerator ist eine abstrakte Platzhalterklasse, die zur Darstellung von Situationen verwendet wird, in denen der zu verwendende Objektbezeichner von einer POJO-Eigenschaft stammt. Syntax@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Entdecken Sie die objektorientierte Programmierung in Go Entdecken Sie die objektorientierte Programmierung in Go Apr 04, 2024 am 10:39 AM

Die Go-Sprache unterstützt die objektorientierte Programmierung durch Typdefinition und Methodenzuordnung. Es unterstützt keine traditionelle Vererbung, sondern wird durch Komposition implementiert. Schnittstellen sorgen für Konsistenz zwischen Typen und ermöglichen die Definition abstrakter Methoden. Praxisbeispiele zeigen, wie OOP zum Verwalten von Kundeninformationen verwendet wird, einschließlich Vorgängen zum Erstellen, Abrufen, Aktualisieren und Löschen von Kunden.

Analyse der objektorientierten Funktionen der Go-Sprache Analyse der objektorientierten Funktionen der Go-Sprache Apr 04, 2024 am 11:18 AM

Die Go-Sprache unterstützt objektorientierte Programmierung, definiert Objekte über Strukturen, definiert Methoden mithilfe von Zeigerempfängern und implementiert Polymorphismus über Schnittstellen. Objektorientierte Funktionen ermöglichen die Wiederverwendung, Wartbarkeit und Kapselung von Code in der Go-Sprache, es gibt jedoch auch Einschränkungen wie das Fehlen traditioneller Konzepte von Klassen und Vererbung sowie Methodensignaturumwandlungen.

Analyse des Flyweight-Musters in der objektorientierten PHP-Programmierung Analyse des Flyweight-Musters in der objektorientierten PHP-Programmierung Aug 14, 2023 pm 05:25 PM

Analyse des Flyweight-Musters in der objektorientierten PHP-Programmierung In der objektorientierten Programmierung ist das Entwurfsmuster eine häufig verwendete Software-Designmethode, die die Lesbarkeit, Wartbarkeit und Skalierbarkeit des Codes verbessern kann. Das Flyweight-Muster ist eines der Entwurfsmuster, das den Speicheraufwand durch die gemeinsame Nutzung von Objekten reduziert. In diesem Artikel wird untersucht, wie Sie den Flyweight-Modus in PHP verwenden, um die Programmleistung zu verbessern. Was ist der Fliegengewichtsmodus? Das Fliegengewichtsmuster ist ein strukturelles Entwurfsmuster, dessen Zweck darin besteht, dasselbe Objekt zwischen verschiedenen Objekten zu teilen.

Erweiterte PHP-Funktionen: Best Practices in der objektorientierten Programmierung Erweiterte PHP-Funktionen: Best Practices in der objektorientierten Programmierung Jun 05, 2024 pm 09:39 PM

Zu den OOP-Best Practices in PHP gehören Namenskonventionen, Schnittstellen und abstrakte Klassen, Vererbung und Polymorphismus sowie Abhängigkeitsinjektion. Zu den praktischen Fällen gehören: Verwenden des Lagermodus zum Verwalten von Daten und Verwenden des Strategiemodus zum Implementieren der Sortierung.

Gibt es in Golang klassenähnliche objektorientierte Funktionen? Gibt es in Golang klassenähnliche objektorientierte Funktionen? Mar 19, 2024 pm 02:51 PM

In Golang (Go-Sprache) gibt es kein Konzept einer Klasse im herkömmlichen Sinne, es stellt jedoch einen Datentyp namens Struktur bereit, durch den objektorientierte Funktionen ähnlich wie Klassen erreicht werden können. In diesem Artikel erklären wir, wie Strukturen zur Implementierung objektorientierter Funktionen verwendet werden, und stellen konkrete Codebeispiele bereit. Definition und Verwendung von Strukturen Werfen wir zunächst einen Blick auf die Definition und Verwendung von Strukturen. In Golang können Strukturen über das Schlüsselwort type definiert und dann bei Bedarf verwendet werden. Strukturen können Attribute enthalten

Vertieftes Verständnis der objektorientierten PHP-Programmierung: Debugging-Techniken für die objektorientierte Programmierung Vertieftes Verständnis der objektorientierten PHP-Programmierung: Debugging-Techniken für die objektorientierte Programmierung Jun 05, 2024 pm 08:50 PM

Indem Sie das Verfolgen des Objektstatus, das Setzen von Haltepunkten, das Verfolgen von Ausnahmen und die Verwendung der xdebug-Erweiterung beherrschen, können Sie objektorientierten PHP-Programmiercode effektiv debuggen. 1. Objektstatus verfolgen: Verwenden Sie var_dump() und print_r(), um Objektattribute und Methodenwerte anzuzeigen. 2. Legen Sie einen Haltepunkt fest: Legen Sie einen Haltepunkt in der Entwicklungsumgebung fest. Wenn die Ausführung den Haltepunkt erreicht, wird der Debugger angehalten, sodass der Objektstatus einfacher überprüft werden kann. 3. Ausnahmen verfolgen: Verwenden Sie Try-Catch-Blöcke und getTraceAsString(), um den Stack-Trace und die Meldung abzurufen, wenn die Ausnahme auftritt. 4. Verwenden Sie den Debugger: Die Funktion xdebug_var_dump() kann den Inhalt von Variablen während der Codeausführung überprüfen.

See all articles