Table des matières
Objectifs de cet article :
Maison développement back-end tutoriel php Explication détaillée du polymorphisme orienté objet PHP (exemple de code)

Explication détaillée du polymorphisme orienté objet PHP (exemple de code)

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

Objectifs de cet article :

1. Comprendre la définition du polymorphisme

2 Comprendre le rôle du polymorphisme

3. Comprendre les scénarios d'utilisation du polymorphisme

4. Maîtriser la mise en œuvre spécifique du polymorphisme

Toujours en suivant la pensée cohérente précédente, nous apprenons grâce à la méthode 3W1H, alors comprenons d'abord

(1) Comprendre le polymorphisme La définition de

Comme il peut y avoir de nombreuses implémentations de méthodes dans une interface, les implémentations spécifiques des méthodes définies dans l'interface sont diverses. Cette fonctionnalité est appelée "

Polymorphisme"

-. Par exemple, l'interface A a deux implémentations, B et C. B et C peuvent avoir des méthodes différentes définies dans A. Ce phénomène est le polymorphisme

(2), comprendre le polymorphisme Le rôle de

est pour permettre à une interface d'avoir différentes implémentations, ce qui rend le code plus pertinent pour le monde réel. Cette approche réduit la distance entre le code et le monde réel, permettant aux développeurs d'implémenter plus facilement une logique métier complexe dans l'implémentation

(3) Comprendre les scénarios d'utilisation du polymorphisme

En fait, ce scénario d'utilisation, une fois que l'on décide d'utiliser une interface, ce phénomène apparaîtra, car une fois qu'une interface a différentes classes d'implémentation, ce phénomène Cela se produira essentiellement, car nous espérons souvent qu'une ou plusieurs méthodes dans une interface peuvent avoir différentes implémentations spécifiques

-Par exemple, la façon de manger, chaque animal a sa propre façon de manger. directement sans penser à l'hygiène, donc ils ne lavent pas la nourriture avant de manger. Mais les humains sont des animaux avancés, donc ils font attention à l'hygiène de base (sauf pour les malades mentaux), se lavent avant de manger et jugent que certaines choses doivent être cuit avant de manger. Et en raison des différences culturelles, chaque pays mange également de différentes manières. Par exemple, les Indiens mangent directement avec leurs mains, tandis que les Chinois mangent avec des baguettes, et certains pays occidentaux utilisent des fourchettes. est très courant dans la vie réelle. La même chose est vraie pour beaucoup d'autres choses, donc le phénomène de polymorphisme est également très courant, et nous écrivons du code en utilisant une programmation orientée objet, il est donc inévitable que nous rencontrions également du « polymorphisme », et afin de rendre notre Pour rendre le code plus pertinent par rapport au monde réel, nous devons également utiliser le "polymorphisme"

(4), maîtriser l'implémentation spécifique du polymorphisme

Résumé :


1. La définition du polymorphisme est que chaque interface peut avoir plusieurs implémentations différentes

Chaque résumé est obtenu par la pratique. Nous utilisons maintenant la pratique pour démontrer le résumé, ce qui peut favoriser la compréhension et faire de chacun. résumé compréhensible. C'est plus clair et plus intuitif

(5), code spécifique

1 Cas 1

Objectifs pratiques :

1. La définition du polymorphisme est que chaque interface peut avoir plusieurs implémentations différentes

<?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);
?>
Copier après la connexion

Le résultat de l'opération est :

Je suis un chat si j'attrape la souris que j'aime. , je vais le manger directement

Je suis un être humain, je me lave avant de manger car je dois faire attention à l'hygiène de base

(6) Appliquez ce que vous apprenez

Question : Utilisation de la programmation orientée objet La méthode simule la scène réelle suivante Le code doit refléter le concept de polymorphisme


Un vieil homme rural, Xiao Liu, élevait 5 poules et 5 chiens chaque matin. , il serait à l'heure à 6 heures. Levez-vous, faites cuire du porridge, et après avoir mangé du porridge, il portera 2 petits seaux de nourriture pour nourrir les poulets et les canards, marchera jusqu'au poulailler et versera l'un des seaux de du riz dans l'auge du poulet, puis se dirige vers la niche à côté, il a versé le seau de nourriture restant avec les restes dans l'auge du chien

Analyse de l'idée :

Analyse de l'objet : Le. les objets à l'intérieur sont le vieil homme, le poulet, le chien, la nourriture, il y a donc au moins ces 4 catégories

2. Analyse des attributs de l'objet : (combinée avec des scènes spécifiques + le monde réel)

Vieil homme : Nom


Poulets : Nombre

Chiens : Nombre

Nourriture : Nom

3. Analyse de la méthode objet : (Combiné avec des scénarios spécifiques + réel monde)

Vieil homme : se lever, cuisiner du porridge, manger (manger du porridge), nourrir


Poulet : manger (picorer du riz pour manger)

Chien : manger (manger des os)

Nourriture : définir le nom de l'aliment


4. Sur la base de l'analyse ci-dessus, nous avons constaté que trois des objets ont des façons de manger, mais ils ont des façons différentes façons de manger, afin que nous puissions rendre cela public. La méthode est extraite et transformée en interface, puis ces trois classes sont implémentées séparément

Le code d'implémentation spécifique est le suivant :

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

?>
Copier après la connexion

Le Le résultat courant est :


Xiao Liu s'est levé

Xiao Liu a cuit du porridge
Xiao Liu a mangé du porridge
Les 5 poulets ont tous mangé du riz
Les 5 chiots ont tous j'ai mangé les restes

(7) Résumé

1 Cet article parle principalement de la définition et de la fonction du polymorphisme, ainsi que de la mise en œuvre spécifique

J'espère que cet article pourra vous apporter un peu d'aide, merci ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter une programmation événementielle orientée objet à l'aide du langage Go Comment implémenter une programmation événementielle orientée objet à l'aide du langage Go Jul 20, 2023 pm 10:36 PM

Comment utiliser le langage Go pour implémenter une programmation événementielle orientée objet Introduction : Le paradigme de programmation orientée objet est largement utilisé dans le développement de logiciels, et la programmation événementielle est un modèle de programmation courant qui réalise le flux du programme à travers le déclenchement et le traitement de contrôle des événements. Cet article présentera comment implémenter une programmation événementielle orientée objet à l'aide du langage Go et fournira des exemples de code. 1. Le concept de programmation événementielle La programmation événementielle est un modèle de programmation basé sur des événements et des messages, qui transfère le contrôle du flux du programme au déclenchement et au traitement des événements. en mode événementiel

Quelle est l'importance de l'annotation @JsonIdentityInfo utilisant Jackson en Java ? Quelle est l'importance de l'annotation @JsonIdentityInfo utilisant Jackson en Java ? Sep 23, 2023 am 09:37 AM

L'annotation @JsonIdentityInfo est utilisée lorsqu'un objet a une relation parent-enfant dans la bibliothèque Jackson. L'annotation @JsonIdentityInfo est utilisée pour indiquer l'identité de l'objet lors de la sérialisation et de la désérialisation. ObjectIdGenerators.PropertyGenerator est une classe d'espace réservé abstraite utilisée pour représenter les situations dans lesquelles l'identifiant d'objet à utiliser provient d'une propriété POJO. Syntaxe@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Explorez la programmation orientée objet dans Go Explorez la programmation orientée objet dans Go Apr 04, 2024 am 10:39 AM

Le langage Go prend en charge la programmation orientée objet via la définition de type et l'association de méthodes. Il ne prend pas en charge l'héritage traditionnel, mais est mis en œuvre par composition. Les interfaces assurent la cohérence entre les types et permettent de définir des méthodes abstraites. Des cas pratiques montrent comment utiliser la POO pour gérer les informations client, notamment la création, l'obtention, la mise à jour et la suppression d'opérations client.

Analyse des fonctionnalités orientées objet du langage Go Analyse des fonctionnalités orientées objet du langage Go Apr 04, 2024 am 11:18 AM

Le langage Go prend en charge la programmation orientée objet, définissant des objets via des structures, définissant des méthodes à l'aide de récepteurs de pointeurs et implémentant le polymorphisme via des interfaces. Les fonctionnalités orientées objet assurent la réutilisation, la maintenabilité et l'encapsulation du code dans le langage Go, mais il existe également des limitations telles que le manque de concepts traditionnels de classes et d'héritage et de conversions de signatures de méthodes.

Analyse du modèle Flyweight dans la programmation orientée objet PHP Analyse du modèle Flyweight dans la programmation orientée objet PHP Aug 14, 2023 pm 05:25 PM

Analyse du modèle Flyweight dans la programmation orientée objet PHP Dans la programmation orientée objet, le modèle de conception est une méthode de conception logicielle couramment utilisée, qui peut améliorer la lisibilité, la maintenabilité et l'évolutivité du code. Le modèle Flyweight est l’un des modèles de conception qui réduit la surcharge de mémoire en partageant des objets. Cet article explique comment utiliser le mode poids mouche en PHP pour améliorer les performances du programme. Qu’est-ce que le mode poids mouche ? Le modèle de poids mouche est un modèle de conception structurelle dont le but est de partager le même objet entre différents objets.

Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Jun 05, 2024 pm 09:39 PM

Les meilleures pratiques de POO en PHP incluent les conventions de dénomination, les interfaces et les classes abstraites, l'héritage et le polymorphisme, ainsi que l'injection de dépendances. Les cas pratiques incluent : l'utilisation du mode entrepôt pour gérer les données et l'utilisation du mode stratégie pour mettre en œuvre le tri.

Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Mar 19, 2024 pm 02:51 PM

Il n'y a pas de concept de classe au sens traditionnel dans Golang (langage Go), mais il fournit un type de données appelé structure, à travers lequel des fonctionnalités orientées objet similaires aux classes peuvent être obtenues. Dans cet article, nous expliquerons comment utiliser les structures pour implémenter des fonctionnalités orientées objet et fournirons des exemples de code concrets. Définition et utilisation des structures Examinons d'abord la définition et l'utilisation des structures. Dans Golang, les structures peuvent être définies via le mot-clé type, puis utilisées si nécessaire. Les structures peuvent contenir des attributs

Compréhension approfondie de la programmation orientée objet PHP : techniques de débogage pour la programmation orientée objet Compréhension approfondie de la programmation orientée objet PHP : techniques de débogage pour la programmation orientée objet Jun 05, 2024 pm 08:50 PM

En maîtrisant le suivi de l'état des objets, la définition de points d'arrêt, le suivi des exceptions et l'utilisation de l'extension xdebug, vous pouvez déboguer efficacement le code de programmation orienté objet PHP. 1. Suivez l'état de l'objet : utilisez var_dump() et print_r() pour afficher les attributs de l'objet et les valeurs des méthodes. 2. Définir un point d'arrêt : définissez un point d'arrêt dans l'environnement de développement et le débogueur se mettra en pause lorsque l'exécution atteint le point d'arrêt, ce qui facilitera la vérification de l'état de l'objet. 3. Tracez les exceptions : utilisez les blocs try-catch et getTraceAsString() pour obtenir la trace de la pile et le message lorsque l'exception se produit. 4. Utilisez le débogueur : La fonction xdebug_var_dump() peut inspecter le contenu des variables pendant l'exécution du code.

See all articles