oop之多态特性的应用实例

<?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();
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值