oop之多态特性的应用实例

来源:互联网 发布:淘宝卖的银壶是真的吗 编辑:程序博客网 时间:2024/06/04 20:47
<?php
/*多态特性:为扩展做准备,父类最好是接口或者抽象类

*/

    interface USB{
        //定义USB接口的宽和高
        const WIDTH=12;
        const HEIGHT=8;
        //声明USB接口需要调用的方法规范
        function load();
        function run();
        function close();
    }
    //声明一个电脑类,方法中参数中传的是由USB接口的子类所创建的一个对象
    class computer{
        function useusb(USB $dev){
            $dev->load();
            $dev->run();
            $dev->close();
        }
    }
    //声明一个鼠标类实现USB接口中的方法
    class mouse implements USB{
        function load(){
            echo "鼠标驱动加载成功!<br>";
        }
        function run(){
            echo "鼠标正常运行!<br>";
        }
        function close(){
            echo "鼠标已成功拔出!<br>";
        }
    }
    
    //再声明一个键盘类来实现USB接口中的方法,多态特性的体现
    class keyboard implements USB{
        function load(){
            echo "键盘驱动加载成功<br>";
        }
        function run(){
            echo "键盘正常运行<br>";
        }
        function close(){
            echo "键盘已成功拔出<br>";
        }
    }
    class worker{
        function usemanual(){
            //一个人拿着一台电脑
            $obj=new computer;
            //同时还拿着一个鼠标
            $m=new mouse();
            /*多态特性的应用:我想用什么USB设备,只需要在接口实现的基础上,在此处创建一个新的对象就可以
            直接拿来使用,比如在此处在创建一个键盘对象*/

            $k=new keyboard();
            //将鼠标插在了电脑上;
            /*此处将鼠标对象作为参数传给了电脑对象中的useusb方法,因为鼠标是USB的子类,所以鼠标也属于
            USB类,子类对象传给父类的引用,调用的是父类的方法,其实执行的是子类的方法内容
            */

            $obj->useusb($m);
            //将键盘也同时插在电脑上;
            $obj->useusb($k);
        }
    }
    $user=new worker();
    $user->usemanual();
?>

原创粉丝点击