Heim  >  Artikel  >  Backend-Entwicklung  >  PHP中关于多态的疑点

PHP中关于多态的疑点

WBOY
WBOYOriginal
2016-06-13 12:50:13823Durchsuche

PHP中关于多态的疑问

本帖最后由 chenlong451 于 2013-03-28 23:51:16 编辑 维基百科中关于多态有一个定义:在面向对象语言中,接口的多种不同的实现方式即为多态

请看此文:
http://www.cnblogs.com/tecs27/archive/2012/03/13/2394028.html

文中给出了两个代码示例,其中用流程控制的代码段如下
<br />
class painter{                                    //定义油漆工类<br />
        public function paintbrush(){                 //定义油漆工动作<br />
            echo "油漆工正在刷漆!\n";<br />
        }<br />
    }<br />
<br />
    class typist{                                    //定义打字员类<br />
        public function typed(){                     //定义打字员工作<br />
            echo "打字员正在打字!\n";<br />
        }<br />
    }<br />
<br />
    function printworking($obj){                    //定义处理类<br />
        if($obj instanceof painter){                //若对象是油漆工类,则显示油漆工动作<br />
            $obj->paintbrush();<br />
        }elseif($obj instanceof typist){            //若对象是打字员类,则显示打字员动作<br />
            $obj->typed();<br />
        }else{                                    //若非以上类,则显示出错信息<br />
            echo "Error: 对象错误!";<br />
        }<br />
    }<br />
<br />
    printworking(new painter());                    //显示员工工作<br />
    printworking(new typist());                     //显示员工工作<br />



为了展示多态,下文又给出使用多态的代码段:
<br>
class employee{//定义员工父类<br>
    protected function working(){//定义员工工作,需要在子类的实现<br>
        echo "本方法需要在子类中重载!";<br>
    }<br>
<br>
}<br>
<br>
class painter extends employee{//定义油漆工类<br>
    public function working(){//实现继承的工作方法<br>
        echo "油漆工正在刷漆!\n";<br>
    }<br>
}<br>
<br>
class typist extends employee{//定义打字员类<br>
    public function working(){<br>
        echo "打字员正在打字!\n"; <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn