2019-07-29 15:56:14 4385瀏覽
本篇文章扣丁學(xué)堂PHP培訓(xùn)小編給小伙伴詳細(xì)對比一下PHP中類繼承和接口繼承的不同之處,對PHP開發(fā)技術(shù)感興趣或者是想要學(xué)習(xí)PHP開發(fā)技術(shù)的小伙伴就隨小編來了解一下吧。
1、PHP類不支持多繼承,也就是子類只能繼承一個父類,但是支持多層次繼承
比如:
class frist{ public function __construct(){ echo "我是第一個類。","<br>"; } public function printer(){ echo "frist","<br>"; } } class seconds extends frist{} class third extends seconds{} $obj = new third(); $obj->printer();
結(jié)果:這是第一個類。 frist 第二個類和第三個類沒有重寫printer()方法,第三個類實例化后可以調(diào)用printer()方法。
2、繼承權(quán)限問題
(1)父類private方法不可被繼承,父類私有化
(2)父類protected方法可以被繼承,但不能被實例化對象調(diào)用,如果調(diào)用會出現(xiàn)" Call to protected method frist::printer()"的報錯,父類對此方法置于保護(hù)模式下
(3)父類public方法可以被繼承、可以被實例化對象調(diào)用,屬于公開方法
(4)子類可重寫父類public或者protected的方法,不能重新private的方法,如果同名只是在本類重新聲明
3、接口類繼承
(1) 接口支持多繼承,接口類的方法不需要實現(xiàn)比如:
interface frist{ public function ex1(); } interface seconds{ public function ex2(); } interface third extends frist,seconds{ public function ex3(); } class fourth implements third{ public function ex1(){} public function ex2(){} public function ex3(){} } class fourth implements frist,seconds{ public function ex1(){} public function ex2(){} }
(2) 接口類的方法權(quán)限都是public,默認(rèn)public
(3)引用接口的類必須實現(xiàn)接口的所有方法,否則會報錯,比如:"Class e contains 1 abstract method and must therefore be declared abstract or implement the remaining methods",即:e類包含1個抽象方法,因此必須聲明抽象或?qū)崿F(xiàn)其余方法。
4、抽象類:只要一個類里面有一個方法是抽象方法,那么這個類就要定義為抽象類
(1)抽象類繼承抽象類不能重寫父類方法。
(2)抽象類繼承是對父類的方法的拓展。
(3)繼承的派生類當(dāng)中要把所有抽象方法重載才能實例化。
(4)抽象類實現(xiàn)的普通發(fā)放,可以在非抽象子類中直接調(diào)用。
5、接口和抽象類的異同點(引用抽象類與接口區(qū)別)
(1)對接口的使用方式是通過關(guān)鍵字implements來實現(xiàn)的,而對于抽象類的操作是使用類繼承的關(guān)鍵字exotends實現(xiàn)的
(2) 接口沒有數(shù)據(jù)成員,但是抽象類有數(shù)據(jù)成員,抽象類可以實現(xiàn)數(shù)據(jù)的封裝。
(3) 接口沒有構(gòu)造函數(shù),抽象類可以有構(gòu)造函數(shù)。
(4)接口中的方法都是public類型,而抽象類中的方法可以使用private、protected或public來修飾。
(5) 一個類可以同時實現(xiàn)多個接口,但是只能實現(xiàn)一個抽象類。
(6) 相同點:函數(shù)體內(nèi)不能寫任何東西,比如:function getName();即可。
想要了解更多關(guān)于PHP開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂PHP培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的PHP講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門到精通開發(fā)實戰(zhàn)技能。扣丁學(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>