您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何在PHP中使用抽象類和接口,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、phpStudy,是一個(gè)新手入門最常用的開發(fā)環(huán)境。二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡(jiǎn)單對(duì)小白比較友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個(gè)功能強(qiáng)大的建站集成軟件包;四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。五、寶塔面板,寶塔面板是一款服務(wù)器管理軟件,支持windows和linux系統(tǒng)。六、UPUPW,UPUPW是目前Windows平臺(tái)下最具特色的Web服務(wù)器PHP套件。
抽象類
抽象類里面可以有非抽象方法。但接口里只能有抽象方法。 聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽像類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽像類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽像構(gòu)造函數(shù)或抽像靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽像方法提供實(shí)現(xiàn),否則它們也是抽像類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。
先看一個(gè)普通類:
<?php class appletree{ privated $catch; piblic function tree($sweet){ $this->catch=$sweet; return $this->catch; } $apple=new appletree(); $eat=$apple->tree('this apple is sweet'); echo $eat; ?>
再看一個(gè)抽象類:
//appletree.php: <?php abstract class appletree{ privated $catch; abstract public function tree1($sweet); public function tree2(){ echo'smell'; } public function _construct(){ //...... } } ?>
<?php include_once('appletree.php'); class anothertree extends appletree{ public function tree1($sweet){ $this->catch='this apple is'; return $this->catch.$sweet; } } $apple=new appletree(); echo $apple->tree1('sweet'); ?>
從普通類和抽象類可以看出:
抽象類和抽象方法前面定義必須有abstract,調(diào)用為extends。抽象類中可以有具體方法,并且具體方法可以在抽象類中實(shí)例化,然而抽象方法不可以在抽象類中實(shí)例化。
接口
oop模式中接口也是比不可少的一部分,接口(interface)是抽像類的變體。在接口中,所有方法都是抽像的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽像的,沒有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)像上調(diào)用接口的方法。由于有抽像類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來決定某對(duì)象的類是否實(shí)現(xiàn)了接口。
具體例子如下:
//fruit.php
<?php interface fruit{ public function apple($sweet); public function orange(); } ?>
<?php include_once('fruit.php'); class fruittree implements fruit{ privated $catch; public function apple($sweet){ $this->catch='this fruit is'; rerurn $this->catch.$sweet; } public function orange(){ return 'this orange is sweet'; } } $tree=new fruittree(); echo $tree->apple('sweet'); echo $tree->orange(); ?>
接口和常量
一個(gè)網(wǎng)上看到的例子:(接口名和常量之間要用間隔符‘::'隔開,接口中可以用靜態(tài)常量,變量不可以)
<?php interface TestInterface { const CONSTVAR = 'aaa'; static staticvar = 111; public function alert($str); } class TestClass implements TestInterface { const CONSTVAR = 'bbb'; public function __CONSTRUCT() { echo TestInterface::CONSTVAR; } public function alert($str) { echo $str; } public function __DESTRUCT() { } } $test1 = new TestClass(); ?>
我們可以看出接口和抽象類的區(qū)別:
1、接口中沒有具體方法,都是抽象方法。
2、接口調(diào)用是implements,抽象類是extends。
3、接口中不可以聲明成員變量(包括類靜態(tài)變量),但是可以聲明類常量。抽象類中可以聲明各種類型成員變量,實(shí)現(xiàn)數(shù)據(jù)的封裝。
4、接口沒有構(gòu)造函數(shù),抽象類可以有構(gòu)造函數(shù)。
5、接口中的方法默認(rèn)都是public類型的,而抽象類中的方法可以使用private,protected,public來修飾。
6、一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,但一個(gè)類只能繼承于一個(gè)抽象類。
上述就是小編為大家分享的如何在PHP中使用抽象類和接口了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。