Maison  >  Article  >  développement back-end  >  Un cas d'implémentation d'une méthode de polymorphisme orienté objet en PHP

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

黄舟
黄舟original
2017-09-28 09:02:511289parcourir

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());
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!

Déclaration:
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