Un cas d'implémentation d'une méthode de polymorphisme orienté objet en PHP

黄舟
Libérer: 2023-03-16 11:58:01
original
1336 Les gens l'ont consulté

Cet article présente principalement la méthode d'implémentation du polymorphisme orienté objet en PHP. Il explique brièvement le principe du polymorphisme orienté objet et combine des exemples spécifiques pour donner des compétences opérationnelles pertinentes pour l'implémentation du polymorphisme en PHP. Les amis dans le besoin peuvent s'y référer. . Suivant

Les exemples de cet article décrivent la méthode d'implémentation polymorphe orientée objet en PHP. Partagez-le avec tout le monde pour votre référence, comme suit :

Polymorphisme : La référence de la classe parent pointe vers l'objet de la classe enfant (en orienté objet, différentes classes peuvent être appelées selon le contexte d'utiliser la classe (en utilisant différentes classes d'entrée (méthodes de classe) pour redéfinir ou modifier les propriétés et le comportement de la classe) ; les points de référence de l'interface vers l'objet de classe qui implémente l'interface.

Orienté objet : Former les données (attributs), les méthodes d'exploitation des données et la logique dans une classe, résumer la classe pour former un objet et utiliser la classe à travers l'objet


<?php
class work{
  function polymorphic($obj){
    //检查是否引用类型(obj是否继承animal类)
    if($obj instanceof animal){
      $obj -> fun();
    }
    else{
      echo "no function";
    }
  }
  //如果需要指定类 (指定cat类,包含cat子类)
  function bose(cat $obj){
    $obj->fun();
  }
}
//抽象类
 abstract class animal{
  abstract function fun();
}
//cat猫类
class cat extends animal{
  function fun(){
    echo "cat say miaomiao...";
  }
}
//dog狗类
class dog extends animal{
  function fun(){
    echo "dog say wangwang...";
  }
}
class mouse extends cat{
}
//先new一个work类
$new_work = new work();
//然后通过new_work对象 调用 polymorphic 方法,传入不同的类实现 父类引用指向子类对象;接口引用指向实现接口的类对象(多态)。
$new_work->polymorphic(new cat());
echo &#39;<br/>&#39;;
$new_work->polymorphic(new dog());
echo &#39;<br/>&#39;;
//指定类方式仿java
$new_work->bose(new cat());
echo &#39;<br/>&#39;;
//如果传输其他类,或者未继承cat类则会报错
//$new_work->bose(new dog());
echo &#39;<br />&#39;;
//这也不会报错
$new_work->bose(new mouse());
Copier après la connexion
Résultat de l'exécution :


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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal