多態性允許每個對象以適合自身的方式去響應共同的消息。多態性增強 " /> 日本不卡免免费观看,麻豆人妻无码性色AV,情欲.美女高潮

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

深入php多態的實現詳解

多態性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息將可以產生不同的結果,這種現象稱為多態性。

多態性允許每個對象以適合自身的方式去響應共同的消息。多態性增強了軟件的靈活性和重用性。

在面向對象的軟件開發中,多態性是最為重要的部分之一。面向對象編程并不只是將相關的方法與數據簡單的結合起來,而是采用面向對象編程中的各種要素將現實生活中的各種情況清晰的描述出來。這一小節將對面向對象編程中的多態性作詳細的講解。

1.什么是多態
 
多 態(Polymorphism)按字面上意思理解就是“多種形狀”。可以理解為多種表現形式,也即“一個對外接口,多個內部實現方法”。在面向對象的理論 中,多態性的一般定義為:同一個操作作用于不同的類的實例,將產生不同的執行結果。也即不同類的對象收到相同的消息時,將得到不同的結果。

在實際的應用開發中,采用面向對象中的多態主要在于可以將不同的子類對象都當作一個父類來處理,并且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。

2.多態的應用設計
 
在實際的應用開發中,通常為了使項目能夠在以后的時間里的輕松實現擴展與升級,需要通過繼承實現可復用模塊進行輕松升級。在進行可復用模塊設計時,就需要盡可能的減少使用流程控制語句。此時就可以采用多態實現該類設計。

【示例】例舉了通常采用流程控制語句實現不同類的處理。其代碼如下所示。
復制代碼 代碼如下:
<?php
    class painter{                                    //定義油漆工類
        public function paintbrush(){                 //定義油漆工動作
            echo "油漆工正在刷漆!/n";
        }
    }
    class typist{                                    //定義打字員類
        public function typed(){                     //定義打字員工作
            echo "打字員正在打字!/n";
        }
    }
    function printworking($obj){                    //定義處理類
        if($obj instanceof painter){                //若對象是油漆工類,則顯示油漆工動作
            $obj->paintbrush();
        }elseif($obj instanceof typist){            //若對象是打字員類,則顯示打字員動作
            $obj->typed();
        }else{                                    //若非以上類,則顯示出錯信息
            echo "Error: 對象錯誤!";
        }
    }
    printworking(new painter());                    //顯示員工工作
    printworking(new typist());                     //顯示員工工作
?>

分析:在上述程序中,首先定義兩個員工類:油漆工類和打字員類。然后定義一個處理函數,在該函數中,判斷員工是否為已經定義的員工,打印出員工的工作狀態。其結果如下所示。
油漆工正在刷漆 
打字員正在打字
從 以上程序可輕松看出,若想顯示其幾種員工的工作狀態,需要首先定義該員工類,并在該員工類中定義員工的工作,然后在printworking()函數中增 加elseif語句以檢查對象是哪一員工類的實例。這在實際的應用中,是非常不可取的。若此時采用多態,則可以輕松解決此問題。

可以首先創建一個員工父類,所有的員工類將繼承自該員工父類,并且繼承父類的所有方法與屬性。然后在員工類中創建“是一”關系,判斷是否為合法的員工。

【示例】例舉了采用多態的方式改寫上例。其代碼如下所示。
復制代碼 代碼如下:
<?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()。  

php技術深入php多態的實現詳解,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产睡熟迷奷系列网站 | 日本无码人妻精品一区二区视频 | 4虎最新网址 | 老师掀开短裙让我挺进动态 | 黑人玩弄极品人妻系列 | 成人免费一区二区无码视频 | 国产人成精品综合欧美成人 | 边吃胸边膜下床震免费版视频 | 国产精品私人玩物在线观看 | 国产精品夜夜春夜夜爽久久小 | 白丝制服被啪到喷水很黄很暴力 | 超碰高清熟女一区二区 | 闺蜜扒开我尿口使劲揉 | 亚洲另类欧美综合在线 | 国产国拍亚洲精品永久软件 | 午夜伦伦电影理论片费看 | 黑人娇小BBW | 麻豆E奶女教师国产精品 | 国产人妻人伦精品A区 | 十八禁啪啦啪漫画 | 狼群影院视频在线观看WWW | 九九精彩视频在线观看视频 | 国产一浮力影院 | 国产剧情福利AV一区二区 | 欧美videqsdesex0| 香蕉动漫库 | 2021国产精品视频 | 色综合精品无码一区二区三区 | 国产成人片视频一区二区青青 | 99热这里只有精品 | 国产精品无码人妻在线 | 国产精品悠悠久久人妻精品 | 青青青草国产 | 欧美日韩中文国产一区发布 | 天天狠狠色综合图片区 | 快穿女主有名器的H纯肉黄暴拉文 | 国产精品18久久久久久白浆. | 浪潮色诱AV久久久久久久 | 亚州AV中文无码乱人伦在线 | 麻豆久久国产亚洲精品超碰热 | 久久国产一区二区三区 |