国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

實例講解PHP面向對象之多態

2024-05-04 23:25:09
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了實例講解PHP面向對象之多態,本文用實例講解什么情況下使用PHP的多態、多態的好處等內容,可以充分幫你理解多態,需要的朋友可以參考下
 
 

什么是多態性?

多態性是繼數據庫抽象和繼承后,面向對象語言的第三個特征。多態即多種形態,具有表現多種形態的能力特征。在面向對象中表示根據對象的類型以不同方式處理。多態性允許每個對象以適合自身的方式去響應共同的消息。多態性增強了軟件的靈活性和重用性。

如我們創建一個doing()方法,如果是學生則打印上課,如是公司職員則打印上班。

普通做法

使用if判斷

復制代碼代碼如下:

/**
 * PHP多態性
 * 瓊臺博客
 */
 
// 定義學生類
class student{
    public function cla(){
            echo "學生工正在上課!<br />";
    }
}
 
// 定義職員類
class office{                              
        public function Wor(){
            echo "職員正在上班!<br />";
        }
}
 
// 判斷對象類型方法
function doing($obj){ 
        if($obj instanceof student){ 
            $obj->cla();
        }elseif($obj instanceof office){
            $obj->wor();
        }else{
            echo "沒有這個對象!";
        }
}
 
doing(new student()); // 學生正在上課
doing(new office());  // 職員正在上班

 

以上結果輸出:

學生正在上課
職員正在上班

這種普通方法有個缺點,就是對象如果很多,那么if..else..很長,不靈活。
 
多態性做法

定義一個公共抽象方法,所有子類繼承它。

復制代碼代碼如下:

/**
 * PHP多態性
 * 瓊臺博客
 */
 
// 定義一個公共類
class pub{
    protected function working(){
        echo "本方法需要在子類中重載!";
    }
}
 
// 定義學生類,繼承公共類pub
class student extends pub{
    public function working(){
        echo "學生工正在上課!<br />";
    }
}
 
// 定義職員類,繼承公共類pub
class office extends pub{
        public function working(){
        echo "職員正在上班!<br />";
        }
}
 
// 判斷對象類型方法
function doing($obj){ 
        if($obj instanceof pub){ 
            $obj->working();
        }else{
            echo "沒有這個對象!";
        }
}
 
doing(new student()); // 學生正在上課
doing(new office());  // 職員正在上班

這就是多態的特性,靈活重用。
 
其它做法

 

從多態性的實現方式來看,無非就規范了每個類都要重載父類的一個方法,從而達到統一效果。而我們在定義類的時候,自行加上統一的方法也可行。因此以上例子也可以這么實現:

復制代碼代碼如下:

/**
 * PHP多態性
 * 瓊臺博客
 */
 
// 定義學生類
class student{
    // 定義統一的方法pub
    public function pub(){
        echo "學生工正在上課!<br />";
    }
}
 
// 定義職員類
class office{
    // 定義統一的方法pub
        public function pub(){
        echo "職員正在上班!<br />";
        }
}
 
// 判斷對象類型方法
function doing($obj){ 
    if($obj){
        // 調用類的統一方法
            $obj->pub();
    }else{
        echo '沒有這個對象';  
    }
}
 
doing(new student()); // 學生正在上課
doing(new office());  // 職員正在上班

當然,以上的例子不能說明多態性就能使用這樣的方式搞定,畢竟多態性在復雜的程序設計中,它能有效的達到靈活重用的特性。

 

多態性也可以理解為一種程序設計方式,而程序設計最終目的無非就是:靈活,多態,重用,高效。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沭县| 新化县| 虎林市| 大方县| 拜泉县| 文成县| 五大连池市| 庆安县| 潼南县| 盐边县| 清远市| 依安县| 长顺县| 盘锦市| 大理市| 巴彦县| 正安县| 太原市| 靖安县| 仁寿县| 新疆| 金门县| 永川市| 长宁区| 烟台市| 宣恩县| 石林| 呼伦贝尔市| 茶陵县| 常州市| 巴林右旗| 喀什市| 昭通市| 淅川县| 射阳县| 雷山县| 肇州县| 肇州县| 克拉玛依市| 福泉市| 岫岩|