php多态模拟

在PHP中,多态是最常用到的一种特性。所谓多态,是指同一个东西不同形态的展示。在PHP中,我们这样定义多态,一个类被多个子类继承,如果这个类的某个方法在多个子类中表现不同的功能,那么这种行为我们就称其为多态的实现。
 
  多态的实现必须要满足三个条件:一是子类继承父类,二是子类重写父类的方法,三是父类引用指向子类对象。
 
  多态的实现K用一个小小的demo来给大家进行演示,demo如下:
        
        
abstract class Person
{
     abstract function say();
 }
    
 class Chinese extends Person 
{       // 条件一:子类继承父类
        function say() { // 条件二:子类重写父类方法
            echo "我说中文!<br>";
        }
  }

class English extends Person
{       //条件一:子类继承父类
        function say() { // 条件二:子类重写父类方法
            echo "I speak English!<br>";            
        }
 }
    
// Person $c = new Chinese(); // 父类引用指向子类对象,PHP中此形式行不通
// Person $e = new English();
    
function func(Person $p) { //PHP中的类型约束只存在与函数的形参
        $p -> say();
 }
func(new Chinese()); // 条件三:父类引用指向子类对象
func(new English()); // 条件三:父类引用指向子类对象

  

原文地址:https://www.cnblogs.com/dawuge/p/10153448.html