一、什么是多态?
多态实在就是依据参数差别而实行差别的要领。
二、php中的多态
多态的观点平常是强范例言语来谈的,由于强范例言语它必需要声明参数范例,比方一个手电筒对象的翻开要领其参数申清楚明了只能是蓝光,就不能传其他光。但能够用父类衬着的体式格局使其多态,比方声明一个光的父类,让别的色彩的光都继续自这个光的父类,说明其参数为父类光,然后传光的任何子类都能够,这就是强范例的多态。
但php是弱范例的动态言语,不检测参数范例,传什么都能够;但在php5.3版本能够声明参数为某对象;当声明参数为某类实例化后的对象时,就得用父类衬着的体式格局令其多态;
三、php多态的明白
php是面向对象的脚本言语,而我们都晓得,面向对象的言语具有三大特征:封装,继续,多态。php理应具有这三大特征。
封装是类的构建历程,php具有;php也具有继续的特征。惟独这个多态,php表现的非常隐约。原因是php是弱范例言语。
java的多态表现的非常清楚,大致分两类:父类援用指向子类对象;接口援用指向完成接口的类对象。java声明变量时都要给变量设定范例,所以存在什么父类援用和接口援用。而php则没有这点表现,php声明变量不需要给变量设定范例,一个变量能够指向差别的数据范例。所以,php不具有像java一样的多态。
php不具有像java那种清楚的多态,不是代表php不具有多态性。看下面一个例子:
abstract class animal{ abstract function fun(); } class cat extends animal{ function fun(){ echo "cat say miaomiao..."; } } class dog extends animal{ function fun(){ echo "dog say wangwang..."; } } function work($obj){ if($obj instanceof animal){ $obj -> fun(); }else{ echo "no function"; } } work(new dog()); work(new cat());
上边的类是抽象类,也表清楚明了接口与完成接口的类对象一样能够实用。
引荐教程:PHP视频教程
以上就是php有多态吗的细致内容,更多请关注ki4网别的相干文章!