亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

如何實現php中模擬多繼承

2020-03-22 19:15:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于如何實現php中模擬多繼承,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

php中模擬多繼承如何實現一、總結一句話總結:其實你繼承別人也是想調用別人類里面的方法和屬性,所以可以這樣做:這本類中創建目標類的對象,然后通過這個對象來調用方法和屬性,這樣比繼承來的方便。二、魔術方法 __call 實現模擬多繼承1、相關知識

PHP沒有多繼承的特性。即使是一門支持多繼承的編程語言,我們也很少會使用這個特性。在大多數人看來,多繼承不是一種好的設計方法。想要給某個類添加額外的特性,不一定要使用繼承。這里我提供一種模擬多繼承的方法以供參考。

PHP有一個魔術方法,叫做__call。當你調用一個不存在的方法時,這個方法會被自動調用。這時,我們就有機會將調用重定向到一個存在的方法。繼承多個父類的子類,尋找方法的過程一般是這樣的:

本身的方法 - 父類1的方法 - 父類2的方法...

模擬過程大致是這樣:將各個父類實例化,然后作為子類的屬性。這些父類提供一些公有的方法。當子類擁有某方法時,__call()函數不會被調用。這相當于“覆蓋”了父類的方法。當調用了不存在的方法時,通過__call()方法依次從父類中尋找可以調用的方法。雖然這不是完備的多繼承,但可以幫助我們解決問題。

 1 ?php  2 html' target='_blank'>class Parent1 {  3 function method1() {}  4 function method2() {}  5 }  6 class Parent2 {  7 function method3() {}  8 function method4() {} 10 class Child { 11 protected $_parents = array(); 12 public function Child(array $parents=array()) { 13 $_parents = $parents; 14 } 16 public function __call($method, $args) { 17 // 從“父類 中查找方法 18 foreach ($this- _parents as $p) { 19 if (is_callable(array($p, $method))) { 20 return call_user_func_array(array($p, $method), $args); 21 } 22 } 23 // 恢復默認的行為,會引發一個方法不存在的致命錯誤 24 return call_user_func_array(array($this, $method), $args); 25 } 26 } 27 $obj = new Child(array(new Parent1(), new Parent2())); 28 $obj- method1(); 29 $obj- method3();

這里沒有涉及屬性的繼承,但實現起來并不困難??梢酝ㄟ^__set()和__get()魔術方法來模擬屬性的繼承。請你動手實踐。

其它方法:通過接口來實現多繼承

php中的類只能繼承一個父類,如果要繼承多個類應采用接口

interface 模擬多繼承

三、PHP接口實現多繼承詳解

在PHP的接口中,接口可以繼承接口。雖然PHP類只能繼承一個父類(單繼承),但是接口和類不同,接口可以實現多繼承,可以繼承一個或者多個接口。當然接口的繼承也是使用extends關鍵字,要多個繼承的話只要用逗號把繼承的接口隔開即可。

需要注意的是當你接口繼承其它接口時候,直接繼承父接口的靜態常量屬性和抽象方法,所以類實現接口時必須實現所有相關的抽象方法。

現在你對PHP接口的繼承有所了解了吧,下面的例子可供參考,代碼如下:

 ?php interface father{ function shuchu(); interface fam extends father{ function cook($name); class test implements fam{ function shuchu(){ echo 接口繼承,要實現兩個抽象方法 echo br function cook($name){ echo 平時經常做飯的人是: .$name; $t=new test(); $t- shuchu(); $t- cook( 媽媽 ? 

代碼運行結果如下:

接口繼承,要實現兩個抽象方法
平時經常做飯的人是:媽媽

上面的示例是接口繼承了一個接口,所以在test類實現fam接口的時候要實例兩個抽象方法,就是把接口的子類和父類的抽象方法都實例。

下面來看一個接口多繼承的示例,代碼如下:

 ?php interface father{ function shuchu(); interface mother{ function dayin($my); interface fam extends father,mother{ function cook($name); class test implements fam{ function dayin($my){ echo 我的名字是: .$my; echo br function shuchu(){ echo 接口繼承,要實現兩個抽象方法 echo br function cook($name){ echo 平時經常做飯的人是: .$name; $t=new test(); $t- shuchu(); $t- dayin( 小強 $t- cook( 媽媽 ? 

示例運行結果:

接口繼承,要實現兩個抽象方法
我的名字是:小強
平時經常做飯的人是:媽媽

這段代碼由于接口繼承了兩個接口,所有實例時要把這三個抽象類的所有抽象方法都實例,總共有三個??赐赀@兩個例子,你應該對接口的繼承熟悉了吧,其實就一個單繼承和多繼承,只要實現了所有相關的抽象方法就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人国产精品免费视频| 亚洲最大的免费| 久久青草福利网站| 91国产视频在线播放| 日本欧美一二三区| 国产精品亚洲视频在线观看| 久久夜精品va视频免费观看| 欧美日在线观看| 国语自产偷拍精品视频偷| 久久69精品久久久久久国产越南| 久久九九全国免费精品观看| 日韩一级黄色av| 97欧美精品一区二区三区| 欧美激情欧美激情| 热99精品只有里视频精品| 国产精品一区二区三区免费视频| 国产主播在线一区| 成人精品一区二区三区| 日韩一级裸体免费视频| 久久这里只有精品99| 欧美精品18videosex性欧美| 日韩一区二区三区在线播放| 亚洲欧洲一区二区三区在线观看| 一本大道久久加勒比香蕉| 国产精品高清在线| 美女999久久久精品视频| 岛国av一区二区在线在线观看| 亚洲欧美制服第一页| 亚洲国产精品推荐| 成年人精品视频| 久久久国产精品一区| 久久精品这里热有精品| 国产视频精品免费播放| 色伦专区97中文字幕| 国产色视频一区| 日韩中文字幕免费看| 日韩亚洲第一页| 国内精品久久久久影院 日本资源| 亚洲男女自偷自拍图片另类| 亚洲第五色综合网| 日韩成人激情在线| 91av视频在线播放| 中文字幕国产日韩| 久久九九热免费视频| 久久久精品在线| 亚洲综合在线做性| 91久久嫩草影院一区二区| 2019中文字幕在线观看| 国产91免费观看| 热久久视久久精品18亚洲精品| 蜜月aⅴ免费一区二区三区| 欧美在线精品免播放器视频| 国产日韩av高清| 奇门遁甲1982国语版免费观看高清| 久久久久久久一区二区三区| 日韩精品亚洲精品| 欧美亚洲成人免费| 九九久久久久久久久激情| 久久久久久91| 国产精品igao视频| 日韩一级黄色av| 国产美女久久精品| 欧美视频中文字幕在线| 亚洲人免费视频| 91青草视频久久| 日韩av在线免费播放| 亚洲一级一级97网| 日本国产精品视频| 萌白酱国产一区二区| xxxx欧美18另类的高清| 大荫蒂欧美视频另类xxxx| 亚洲国产欧美一区二区丝袜黑人| 精品国产自在精品国产浪潮| 久久久国产精品亚洲一区| www.久久久久| 欧洲亚洲妇女av| 97成人精品视频在线观看| 丰满岳妇乱一区二区三区| 欧洲中文字幕国产精品| 国产精品www| 欧美成aaa人片在线观看蜜臀| 亚洲成人久久久久| 欧美性猛交xxxx| 欧美激情xxxxx| 亚洲国产一区二区三区四区| 久久6免费高清热精品| 欧美夫妻性生活xx| 国产精品高潮粉嫩av| 国产精品亚洲一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 国外视频精品毛片| 91成人在线观看国产| 日韩在线观看电影| 国产精品国产三级国产专播精品人| 97久久精品人搡人人玩| 国产精品视频免费观看www| 日韩电影免费观看在线| 亚洲天堂精品在线| 国产欧美一区二区三区久久人妖| 亚洲国产91色在线| 在线视频欧美日韩精品| 大伊人狠狠躁夜夜躁av一区| 日韩精品视频免费专区在线播放| 亚洲性猛交xxxxwww| 美女黄色丝袜一区| 国产成人综合av| 亚洲亚裔videos黑人hd| 深夜福利一区二区| 欧美亚洲成人免费| 欧美中在线观看| 色综合久久88| 91亚洲va在线va天堂va国| 日韩精品中文字幕在线| 久久99久国产精品黄毛片入口| 亚洲国产成人av在线| 亚洲国产精品99| 欧美小视频在线| 欧美成人免费小视频| 91精品视频观看| 欧美日韩成人网| 日韩av综合网站| 亚洲香蕉伊综合在人在线视看| 国产成人精品亚洲精品| 欧美精品日韩三级| 国产成+人+综合+亚洲欧美丁香花| 亚洲最大的成人网| 色老头一区二区三区| 国产精品免费看久久久香蕉| 久久久久久久久电影| 久久电影一区二区| 麻豆精品精华液| 国产精品99蜜臀久久不卡二区| 久久亚洲精品一区二区| 久国内精品在线| 国产精品白丝jk喷水视频一区| 人九九综合九九宗合| 欧美精品在线视频观看| 午夜精品99久久免费| 欧美性猛交xxxx乱大交3| 在线播放精品一区二区三区| 日韩中文在线不卡| 日韩欧美一区二区三区| 91极品女神在线| 中文字幕视频在线免费欧美日韩综合在线看| 伊人青青综合网站| 亚洲人午夜精品免费| 成人a在线观看| 国产精品午夜视频| 日韩在线视频播放| 欧美亚洲国产另类| 欧美精品久久久久a| 亚洲美女av在线播放| 国内精品一区二区三区四区| 久久精品国产久精国产思思| 青青草原一区二区| 国产69久久精品成人看| 欧美国产中文字幕| 美女视频久久黄| 在线观看国产精品淫| 91久久在线观看| 亚洲图中文字幕| 久久久亚洲国产天美传媒修理工| 国产脚交av在线一区二区| 热99在线视频|