一、什么是多态?
多态实在便是根据参数不同而实行不同的方法。
二、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有多态吗的详细内容,更多请关注其它干系文章!
更多技巧请《转发 + 关注》哦!