日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
PHP interface:接口
繼承的特性簡(jiǎn)化了對(duì)象、類的創(chuàng)建,增加了代碼的重用性。但 php 只支持單繼承,也就是說(shuō)每個(gè)類只能繼承一個(gè)父類。為了解決這個(gè)問(wèn)題,PHP 引入了接口。接口是一種特殊的抽象類,而抽象類又是一種特殊的類,所以可以將接口看作是一種特殊的類。

1、接口的聲明

如果抽象類中的所有方法都是抽象方法,我們就可以使用另外一種聲明方式——“接口”技術(shù)。我們都知道類的聲明是使用“class”關(guān)鍵字,而接口的聲明則是使用“interface”關(guān)鍵字。聲明接口的格式如下所示:

interface 接口名稱{
    // 常量成員
    // 抽象方法
}

接口中所有的方法都是抽象方法,而且不需要在方法前使用 abstract 關(guān)鍵字進(jìn)行修飾。而且在接口中也不需要顯示地使用 public 訪問(wèn)權(quán)限來(lái)進(jìn)行修飾,因?yàn)槟J(rèn)權(quán)限就是 public 的,也只能是 public(公有的)。另外,接口中不能聲明變量,只能使用 const 關(guān)鍵字聲明為常量類型的成員屬性。

接口和抽象類一樣也不能實(shí)例化為對(duì)象,它是一種更嚴(yán)格的規(guī)范,也需要通過(guò)子類來(lái)實(shí)現(xiàn)。與抽象類不同的是,接口可以直接使用接口名稱在接口外面獲取常量成員的值。示例代碼如下所示:

';
    echo Demo::URL;
?>

運(yùn)行結(jié)果如下:

C語(yǔ)言中文網(wǎng)
http://c.biancheng.net/php/

2、接口的應(yīng)用

因?yàn)榻涌诓荒苓M(jìn)行實(shí)例化操作,所以要使用接口中的成員,就必須借助子類。在子類中繼承接口需要使用 implements 關(guān)鍵字,如果要實(shí)現(xiàn)多個(gè)接口的繼承,那么每個(gè)接口之間使用逗號(hào)
,分隔。

在使用 implements 關(guān)鍵字繼承接口的同時(shí),還可以使用 extends 關(guān)鍵字來(lái)繼承一個(gè)類。也就是說(shuō),可以在繼承一個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口,但一定要先使用 extends 繼承類再去使用 implements 實(shí)現(xiàn)多個(gè)接口。語(yǔ)法格式如下:

class 類名 extends 父類名 implements 接口一, 接口二, ..., 接口 n {
    // 實(shí)現(xiàn)所有接口中的抽象方法
}

下面通過(guò)一個(gè)簡(jiǎn)單的示例來(lái)演示一下接口的使用,代碼如下:

';
        }
        public function fun2(){
            echo self::URL;
        }
    }

    $obj = new Website();
    $obj -> fun1();
    $obj -> fun2();
?>

運(yùn)行結(jié)果如下:

C語(yǔ)言中文網(wǎng)
http://c.biancheng.net/php/

提示:既然要通過(guò)子類繼承了接口中的方法,那么接口中的所有方法都必須在子類中實(shí)現(xiàn),否則 PHP 將拋出如下所示的錯(cuò)誤信息:

Fatal error: Class Website contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Demo::fun2) ... ...

我們還可以使用 extends 關(guān)鍵字讓一個(gè)接口去繼承另一個(gè)接口,實(shí)現(xiàn)接口之間的擴(kuò)展。在下面的示例中先定義一個(gè)接口 One,然后再定義一個(gè)接口 Two 來(lái)繼承 One:

interface One{
    function fun1();
    function fun2();
}
interface Two extends One{
    function fun3();
    function fun4();
}

如果需要使用抽象類去實(shí)現(xiàn)接口中的部分方法,也需要使用 implements 關(guān)鍵字。示例代碼如下所示:

interface Demo{
    function fun1();
    function fun2();
}
abstract class Website implements Demo{
    public function fun2(){
        ... ... ;
    }
    abstract function fun3();
}

說(shuō)了這么多,那么使用接口具體有什么作用呢?其實(shí)它的作用很簡(jiǎn)單,當(dāng)有很多人一起開(kāi)發(fā)一個(gè)項(xiàng)目時(shí),每個(gè)人都可能會(huì)去調(diào)用別人寫的一些類。這時(shí)有人就會(huì)問(wèn)了,我怎么知道別人的某個(gè)功能的實(shí)現(xiàn)方法是怎么命名的呢?這個(gè)時(shí)候 PHP 接口就起到作用了。

簡(jiǎn)單來(lái)說(shuō),我們可以將接口看作一個(gè)類的模板或者類的規(guī)定。如果你屬于這類,你就必須遵循這個(gè)類的規(guī)定,少一個(gè)都不行,但是具體怎么去做,那是你的事。也就是說(shuō)我們可以定義一些接口,每個(gè)接口中都包含若干的抽象方法。在多人開(kāi)發(fā)時(shí),每個(gè)人都根據(jù)自己的需要來(lái)實(shí)現(xiàn)一部分接口,這樣就可以避免我們?cè)谡{(diào)用別人開(kāi)發(fā)的方法時(shí)不知道方法名的尷尬了。


新聞名稱:PHP interface:接口
地址分享:http://m.5511xx.com/article/dhepcsh.html