Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des objektorientierten PHP-Polymorphismus (Codebeispiel)

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

易达
易达Original
2020-05-26 15:46:492501Durchsuche

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);
?>

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);//给小狗喂食

?>

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!

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