溫馨提示×

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

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

php中怎么實(shí)現(xiàn)類繼承和接口繼承

發(fā)布時(shí)間:2021-08-13 16:15:44 來源:億速云 閱讀:120 作者:Leah 欄目:數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)php中怎么實(shí)現(xiàn)類繼承和接口繼承,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

1、PHP類不支持多繼承,也就是子類只能繼承一個(gè)父類,但是支持多層次繼承

比如:

class frist{  public function __construct(){    echo "我是第一個(gè)類。","<br>";  }  public function printer(){    echo "frist","<br>";  }}class seconds extends frist{}class third extends seconds{}$obj = new third();$obj->printer();

結(jié)果:這是第一個(gè)類。 frist 第二個(gè)類和第三個(gè)類沒有重寫printer()方法,第三個(gè)類實(shí)例化后可以調(diào)用printer()方法。

2、繼承權(quán)限問題

(1)父類private方法不可被繼承,父類私有化

(2)父類protected方法可以被繼承,但不能被實(shí)例化對(duì)象調(diào)用,如果調(diào)用會(huì)出現(xiàn)" Call to protected method frist::printer()"的報(bào)錯(cuò),父類對(duì)此方法置于保護(hù)模式下

(3)父類public方法可以被繼承、可以被實(shí)例化對(duì)象調(diào)用,屬于公開方法

(4)子類可重寫父類public或者protected的方法,不能重新private的方法,如果同名只是在本類重新聲明

3、接口類繼承

(1) 接口支持多繼承,接口類的方法不需要實(shí)現(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)引用接口的類必須實(shí)現(xiàn)接口的所有方法,否則會(huì)報(bào)錯(cuò),比如:"Class e contains 1 abstract method and must therefore be declared abstract or implement the remaining methods",即:e類包含1個(gè)抽象方法,因此必須聲明抽象或?qū)崿F(xiàn)其余方法。

4、抽象類:只要一個(gè)類里面有一個(gè)方法是抽象方法,那么這個(gè)類就要定義為抽象類

(1)抽象類繼承抽象類不能重寫父類方法。

(2)抽象類繼承是對(duì)父類的方法的拓展。

(3)繼承的派生類當(dāng)中要把所有抽象方法重載才能實(shí)例化。

(4)抽象類實(shí)現(xiàn)的普通發(fā)放,可以在非抽象子類中直接調(diào)用。

5、接口和抽象類的異同點(diǎn)(引用抽象類與接口區(qū)別)

(1)對(duì)接口的使用方式是通過關(guān)鍵字implements來實(shí)現(xiàn)的,而對(duì)于抽象類的操作是使用類繼承的關(guān)鍵字exotends實(shí)現(xiàn)的

(2) 接口沒有數(shù)據(jù)成員,但是抽象類有數(shù)據(jù)成員,抽象類可以實(shí)現(xiàn)數(shù)據(jù)的封裝。

(3) 接口沒有構(gòu)造函數(shù),抽象類可以有構(gòu)造函數(shù)。

(4)接口中的方法都是public類型,而抽象類中的方法可以使用private、protected或public來修飾。

(5) 一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,但是只能實(shí)現(xiàn)一個(gè)抽象類。

(6) 相同點(diǎn):函數(shù)體內(nèi)不能寫任何東西,比如:function getName();即可。

關(guān)于php中怎么實(shí)現(xiàn)類繼承和接口繼承就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

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

php
AI