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

首頁 > 開發 > PHP > 正文

舉例講解PHP面向對象編程的多態

2024-05-04 23:38:45
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了舉例講解PHP面對對象編程的多態,是PHP入門學習中的基礎知識,需要的朋友可以參考下

什么是多態?

多態性,其來自于dictionary.com的定義是"以不同形式,階段或者類型出現在獨立的組織中或者同種組織中,而不存在根本區別。"由該定義,我們可以認為,多態性是一種通過多種狀態或階段來描述相同對象的編程方式。其實,它的真正意義在于:實際開發中,我們只需要關注一個接口或基類的編程,而不必擔心一個對象所屬于的具體類(class)。

如果你熟悉設計模式,即使只是有個初步了解,那么你也會了解這個概念。事實上,PHP5多態性可能是基于模式設計編程中的最偉大的工具。它允許我們以一種邏輯的方式來組織相類似的對象從而實現在具體編碼時不必擔心對象的具體類型;而且,我們只需要對一個所期望的接口或基類編程即可。一個應用程序越抽象,則它就顯得越靈活--而多態性是對行為加以抽象的最好的方式之一。

例如,讓我們考慮一個叫Person的類。我們可以用稱為David,Charles和Alejandro的類來子類化Person。Person有一個抽象方法AcceptFeedback(),所有的子類都要實現這個方法。這意味著,任何使用基類Person的子類的代碼都能調用方法AcceptFeedback()。你不必檢查該對象是一個David還是一個Alejandro,僅知道它是一個Person就夠了。結果是,你的代碼只需關注"最小公分母"-Person類即可。

在這個示例中的Person類也可以被創建為一個接口。當然,與上面相比存在一些區別,主要在于:一個接口并沒有給出任何行為,而僅確定了一組規則。一個Person接口要求的是"你必須支持AddFeedback()方法",而一個Person類可以提供一些AddFeedback()方法的缺省代碼-你對之的理解可以是"如果你不選擇支持AddFeedback(),那么你應該提供一種缺省實現。"至于如何選擇接口或基類則并非本文的主題;但是,一般說來,你需要通過基類來實現一個缺省的方法。如果你能夠簡單地勾勒出你的類所要實現的一組期望的功能,那么你也可以使用一個接口。

通俗理解

多態最直接的定義就是讓具有繼承關系的不同類對象,可以對相同名稱的成員函數調用,產生不同的反應結果

多態的代碼

 

 
  1. <?php  
  2.  
  3. /**  
  4. * 聲明接口Demo  
  5. * @author wzy  
  6.  
  7. */ 
  8. interface Demo  
  9. {  
  10.  
  11. const NAME = "wangzhengyi";  
  12.  
  13. const AGE = 25;  
  14.  
  15. function fun1 (); // 聲明方法默認是public abstract  
  16. function fun2 ();  
  17. }  
  18.  
  19. class One implements Demo  
  20. {  
  21.  
  22. public function fun1 ()  
  23. {  
  24. echo Demo::NAME . "就讀于中國傳媒大學";  
  25. }  
  26.  
  27. public function fun2 ()  
  28. {  
  29. echo Demo::NAME . "的年齡是" . Demo::AGE;  
  30. }  
  31. }  
  32.  
  33. class Two implements Demo  
  34. {  
  35.  
  36. public function fun1 ()  
  37. {  
  38. echo Demo::NAME . "在北京靈創眾和科技有限公司實習中";  
  39. }  
  40.  
  41. public function fun2 ()  
  42. {  
  43. echo Demo::NAME . "去年的年齡是24";  
  44. }  
  45. }  
  46.  
  47. // 同一個接口,實現同一個方法,不同的對象,反應結果不同。這就是多態的表現和應用  
  48.  
  49. $one = new One();  
  50. $one->fun1(); // wangzhengyi就讀于中國傳媒大學  
  51. $one->fun2(); // wangzhengyi的年齡是25  
  52.  
  53. echo "<br>";  
  54.  
  55. $two = new Two();  
  56. $two->fun1(); // wangzhengyi在北京靈創眾和科技有限公司實習中  
  57. $two->fun2(); // wangzhengyi去年的年齡是24  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳城县| 晋城| 边坝县| 甘谷县| 双辽市| 镇康县| 平湖市| 集安市| 溧阳市| 雷波县| 陈巴尔虎旗| 延吉市| 永兴县| 阳信县| 西安市| 莱芜市| 新邵县| 仙桃市| 苍梧县| 东丰县| 成都市| 肥城市| 哈尔滨市| 柏乡县| 青神县| 张家港市| 河津市| 鄂州市| 沧州市| 濮阳市| 台湾省| 杨浦区| 黔江区| 鄯善县| 呼伦贝尔市| 洛宁县| 卫辉市| 开鲁县| 增城市| 甘洛县| 巴马|