溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP面對對象編程之多態(tài)的示例分析

發(fā)布時間:2021-09-05 11:28:36 來源:億速云 閱讀:163 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“PHP面對對象編程之多態(tài)的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“PHP面對對象編程之多態(tài)的示例分析”這篇文章吧。

什么是多態(tài)?
多態(tài)性,其來自于dictionary.com的定義是"以不同形式,階段或者類型出現(xiàn)在獨立的組織中或者同種組織中,而不存在根本區(qū)別。"由該定義,我們可以認為,多態(tài)性是一種通過多種狀態(tài)或階段來描述相同對象的編程方式。其實,它的真正意義在于:實際開發(fā)中,我們只需要關(guān)注一個接口或基類的編程,而不必擔心一個對象所屬于的具體類(class)。
如果你熟悉設(shè)計模式,即使只是有個初步了解,那么你也會了解這個概念。事實上,PHP5多態(tài)性可能是基于模式設(shè)計編程中的最偉大的工具。它允許我們以一種邏輯的方式來組織相類似的對象從而實現(xiàn)在具體編碼時不必擔心對象的具體類型;而且,我們只需要對一個所期望的接口或基類編程即可。一個應(yīng)用程序越抽象,則它就顯得越靈活--而多態(tài)性是對行為加以抽象的最好的方式之一。
例如,讓我們考慮一個叫Person的類。我們可以用稱為David,Charles和Alejandro的類來子類化Person。Person有一個抽象方法AcceptFeedback(),所有的子類都要實現(xiàn)這個方法。這意味著,任何使用基類Person的子類的代碼都能調(diào)用方法AcceptFeedback()。你不必檢查該對象是一個David還是一個Alejandro,僅知道它是一個Person就夠了。結(jié)果是,你的代碼只需關(guān)注"最小公分母"-Person類即可。
在這個示例中的Person類也可以被創(chuàng)建為一個接口。當然,與上面相比存在一些區(qū)別,主要在于:一個接口并沒有給出任何行為,而僅確定了一組規(guī)則。一個Person接口要求的是"你必須支持AddFeedback()方法",而一個Person類可以提供一些AddFeedback()方法的缺省代碼-你對之的理解可以是"如果你不選擇支持AddFeedback(),那么你應(yīng)該提供一種缺省實現(xiàn)。"至于如何選擇接口或基類則并非本文的主題;但是,一般說來,你需要通過基類來實現(xiàn)一個缺省的方法。如果你能夠簡單地勾勒出你的類所要實現(xiàn)的一組期望的功能,那么你也可以使用一個接口。

通俗理解
多態(tài)最直接的定義就是讓具有繼承關(guān)系的不同類對象,可以對相同名稱的成員函數(shù)調(diào)用,產(chǎn)生不同的反應(yīng)結(jié)果

多態(tài)的代碼

<?php 
   
  /** 
   * 聲明接口Demo 
   * @author wzy 
   * 
   */ 
  interface Demo 
  { 
   
    const NAME = "wangzhengyi"; 
   
    const AGE = 25; 
   
    function fun1 (); // 聲明方法默認是public abstract 
    function fun2 (); 
  } 
   
  class One implements Demo 
  { 
   
    public function fun1 () 
    { 
      echo Demo::NAME . "就讀于中國傳媒大學"; 
    } 
   
    public function fun2 () 
    { 
      echo Demo::NAME . "的年齡是" . Demo::AGE; 
    } 
  } 
   
  class Two implements Demo 
  { 
   
    public function fun1 () 
    { 
      echo Demo::NAME . "在北京靈創(chuàng)眾和科技有限公司實習中"; 
    } 
   
    public function fun2 () 
    { 
      echo Demo::NAME . "去年的年齡是24"; 
    } 
  } 
   
  // 同一個接口,實現(xiàn)同一個方法,不同的對象,反應(yīng)結(jié)果不同。這就是多態(tài)的表現(xiàn)和應(yīng)用 
   
  $one = new One(); 
  $one->fun1(); // wangzhengyi就讀于中國傳媒大學 
  $one->fun2(); // wangzhengyi的年齡是25 
   
  echo "<br>"; 
   
  $two = new Two(); 
  $two->fun1(); // wangzhengyi在北京靈創(chuàng)眾和科技有限公司實習中 
  $two->fun2(); // wangzhengyi去年的年齡是24

以上是“PHP面對對象編程之多態(tài)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI