大家在使用PHP的时候,是如何理解它的多态呢?
###多态就主要两大特性,一个重载(overload
)、一个重写(override
)。
重载指方法的名称相同、但参数签名不同。但 PHP 中本身并没有提供简单的方式来重载,只能利用魔术方法,再加上弱类型的原因,可读性并不是很好。所以实际项目中并不推荐重载,而是定义不同的方法。
重写指子类继承父类的方法、但重新实现了这个方法。一般其他 OOP 语言会提供诸如 override
、@Override
等关键字或特性来表明这是一个重写方法。但 PHP 中只要你继承后用同样的名字和参数个数定义一个方法就算重写了,需要联系上下文来确定这是不是一个重写方法。