zoukankan      html  css  js  c++  java
  • PHP 多态

    可以首先创建一个员工父类,所有的员工类将继承自该员工父类,并且继承父类的所有方法与属性。然后在员工类中创建“是一”关系,判断是否为合法的员工。

    【示例】例举了采用多态的方式改写上例。其代码如下所示。

    复制代码
    class employee{//定义员工父类
    protected function working(){//定义员工工作,需要在子类的实现
    echo "本方法需要在子类中重载!";
    }

    }

    class painter extends employee{//定义油漆工类
    public function working(){//实现继承的工作方法
    echo "油漆工正在刷漆!\n";
    }
    }

    class typist extends employee{//定义打字员类
    public function working(){
    echo "打字员正在打字!\n";
    }
    }

    class manager extends employee{//定义经理类
    public function working(){
    echo "经理正在开会!";
    }
    }

    function printworking($obj){//定义处理方法
    if($obj instanceof employee){//若是员工对象,则显示其工作状态
    $obj->working();
    }else{//否则显示错误信息
    echo "Error: 对象错误!";
    }
    }

    printworking(new painter());//显示油漆工的工作
    printworking(new typist());//显示打字员的工作
    printworking(new manager());//显示经理的工作
    复制代码




    分析:在上述程序中,首先定义一个员工基类,并定义一个员工工作状态的方法。然后定义将继承自员工基类的三个员工类:油漆工类、打字员类和经理类。然后定义显示员工工作状态的方法。并在该方法中创建一个“是一”关系,用于判断是否为合法的员工。其结果如下所示。

    油漆工正在刷漆! 
    打字员正在打字! 
    经理正在开会!


    从上例可发现,无论增加多少个员工类,只需要实现自员工父类继承的该员工类和方法。而无须修改显示员工工作状态的方法printworking()。

    我的微信号:Killallspree
  • 相关阅读:
    线程基础1
    组合数学的卡特兰数 TOJ 3551: Game of Connections
    2017ACM/ICPC广西邀请赛-重现赛(感谢广西大学)
    Codeforces Round #430 (Div. 2)
    线代之高斯消元
    牛客网Wannafly模拟赛
    TOJ3039: 材质贴图
    AtCoder Grand Contest 019
    TOJ 3974: Region n条直线m个圆最多将圆分为几个区域
    AIM Tech Round 4 (Div. 2)
  • 原文地址:https://www.cnblogs.com/killallspree/p/3108495.html
Copyright © 2011-2022 走看看