• 技术文章 >后端开发 >PHP问题

    php有多态吗

    王林王林2019-10-21 17:23:12原创1667

    一、什么是多态?

    多态其实就是根据参数不同而执行不同的方法。

    二、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有多态吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 多态
    上一篇:php函数可以分为哪三种 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP中的多态• 关于PHP多态的理解• php怎么实现多态• php用哪几种形式实现多态
    1/1

    PHP中文网