• 微信号
  • 微信号
目录

PHP基础

您当前的位置:首页 > 我的笔记 > PHP基础>php多态Polymorphi*

上一篇: php设计模式

下一篇: 抽象类与接口

php多态Polymorphi*

多 态(Polymorphi*)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向对象的理论 中,多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。

在设计一个成员方法时,通常希望该方法具备*的通用性,如,要实现一个动物叫的方法,由于没哥哥动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数的对象,当传入猫类对象时,就发出猫类的叫声,传入犬类对象时就发出犬类的叫声,这种 向方法中传入不同的对象,方法执行效果各异的现象就是多态。

多态实现条件

多态的实现有三个条件:首先必须有继承,即必须有父类(或基类)及其派生的子类。其次必须有父类的引用指向子类的对象,这是实现多态*重要的一个条件。*后必须有方法的重写,即子类必须对父类的某些方法根据自己的需求进行重写,方法名和参数都是相同的

案例

<?php 
 //定义animal接口 
 abstract class animal{ 
 public abstract function shout(); 
 } 
 //定义dog类,实现animal接口 
 class dog extends animal{ 
 public function shout(){ 
 echo "汪汪……<br>"; 
 } 
 } 
 //定义cat类,实现animal接口 
 class cat extends animal{ 
 public function shout(){ 
 echo "喵喵……<br>"; 
 } 
 } 
 function AnimalShout($obj){ 
 if($obj instanceof animal){ 
 $obj->shout(); 
 }else{ 
 echo "对象错误!"; 
 } 
 } 
 $cat1=new cat(); 
 $dog1=new dog(); 
 AnimalShout($cat1); 
 AnimalShout($dog1); 
?>

运行结果

通过AnimalShout方法中唇乳不同的对象,AnimalShout()方法打印出不同动物的叫声

由此可见,多态使程序变得更加灵活,有效*程序扩展性

上一篇: php设计模式

下一篇: 抽象类与接口