• 浅谈PHP面向对象编程(八、多态)


    8.0  多态


    在设计一个成员方法时,通常希望该方法具备一定的通用性。例如要实现一个动物叫的方法,由于每个动物的叫声是不同的,因此可以在方法中接收-个动物类型的参数的对象当传人猫类对象时就发出猫类的叫声,传人犬类对象时就发出犬类的叫声,这种向方法中传人不同的对象,方法执行效果各异的现象就是多态。为了让读者更好地拿握多态的用法,接下来通过一个案例来学习,如例8-22所示。

    例8-22

     1 <?php
     2      //定义Animal接口
     3     abstract class  Animal{
     4            public abstract function shout();
     5      }
     6     //定义Dog类,实现了Animal接口
     7     class Dog extends Animal{
     8          public function shout(){
     9             echo "汪汪……<br>";
    10          }
    11     }
    12      //定义Cat类,实现了Animal接口
    13      class Cat extends Animal{
    14          public function shout(){
    15              echo "喵喵……<br>";
    16         }
    17      }
    18      function   AnimalShout($obj){ 
    19          if($obj instanceof Animal){
    20              $obj->shout();
    21          }else{
    22              echo "Error: 对象错误!";
    23          }
    24      }
    25      $cat=new  Cat();
    26      $dog=new  Dog();
    27      AnimalShout($cat);
    28      AnimalShout($dog);
    29  ?>

    运行结果

    在例8-22中通过向Amimaltou方法中传人不同的对象,AnimalShout法打印出不同动物的叫声, 由此可见,多态使程序变得更加灵活,有效的提高了程序的扩展性。

  • 相关阅读:
    【Linux】PS命令
    【Linux】多进程与多线程之间的区别
    【杂项】XML Schema和DTD的区别
    推荐一组强大的Collection类
    关于Decorator模式我的理解
    菜鸟白话设计模式系列
    PowerCollections研究: 第1弹竟就发现不少问题
    [白话设计模式] Singleton
    PowerCollection研究:第2枪小谈RemoveALL算法
    yield 关键字
  • 原文地址:https://www.cnblogs.com/lemon-Net-Skill/p/9814863.html
Copyright © 2020-2023  润新知