詳細(xì)對(duì)比php中類繼承和接口繼承
PHP類繼承:
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();即可。
- PHP Trait代碼復(fù)用類與多繼承實(shí)現(xiàn)方法詳解
- PHP接口多繼承及tarits實(shí)現(xiàn)多繼承效果的方法
- PHP接口繼承及接口多繼承原理與實(shí)現(xiàn)方法詳解
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之接口的繼承定義與用法詳解
- php 三大特點(diǎn):封裝,繼承,多態(tài)
- PHP入門教程之面向?qū)ο蟮奶匦苑治?繼承,多態(tài),接口,抽象類,抽象方法等)
- PHP中類的繼承和用法實(shí)例分析
- php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)
- PHP類的封裝與繼承詳解
- php 多繼承的幾種常見實(shí)現(xiàn)方法示例
相關(guān)文章
PHP開發(fā)的文字水印,縮略圖,圖片水印實(shí)現(xiàn)類與用法示例
這篇文章主要介紹了PHP開發(fā)的文字水印,縮略圖,圖片水印實(shí)現(xiàn)類與用法,結(jié)合完整實(shí)例形式分析了php文字水印、縮略圖操作類定義與簡(jiǎn)單使用方法,需要的朋友可以參考下2019-04-04php實(shí)現(xiàn)刪除指定目錄下相關(guān)文件的方法
這篇文章主要介紹了php實(shí)現(xiàn)刪除指定目錄下相關(guān)文件的方法,主要涉及對(duì)文件的遍歷以及對(duì)文件的各種常用操作,需要的朋友可以參考下2014-10-10php實(shí)現(xiàn)的仿阿里巴巴實(shí)現(xiàn)同類產(chǎn)品翻頁
當(dāng)前頁左邊的頁碼為最新的產(chǎn)品,按更新時(shí)間呈升序排列;右邊的頁碼為早期的產(chǎn)品, 按更新時(shí)間呈降序排列。2009-12-12php + ajax 實(shí)現(xiàn)的寫入數(shù)據(jù)庫操作簡(jiǎn)單示例
這篇文章主要介紹了php + ajax 實(shí)現(xiàn)的寫入數(shù)據(jù)庫操作,結(jié)合實(shí)例形式分析了php + ajax 寫入數(shù)據(jù)庫基本原理、操作技巧與相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2020-05-05php代碼調(diào)試?yán)鱢irephp安裝與使用方法分析
這篇文章主要介紹了php代碼調(diào)試?yán)鱢irephp安裝與使用方法,簡(jiǎn)單分析了firephp的下載、安裝、測(cè)試代碼調(diào)試等使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-08-08