接口是PHP面向?qū)ο?/a>程序設(shè)計(jì)中非常重要的一個概念。本文以實(shí)例形式較為詳細(xì)的講述了PHP接口的用法。具體如下:
接口:interface
在PHP中,我們可以規(guī)定,一個對象應(yīng)該具有哪些公共的外部操作,即可使用interface來規(guī)定。
公共的方法就是接口。用于規(guī)定一個對象應(yīng)該用于哪些公共的操作方法(接口),這個也叫接口(公共操作方法的集合)
即:接口(interface結(jié)構(gòu),公共方法集合)
公共方法(接口方法)
定義:用于限定某個對象所必須擁有的公共操作方法的一種結(jié)構(gòu),稱之為接口(interface)
語法:定義接口結(jié)構(gòu),使用interface關(guān)鍵字。接口內(nèi)定義的都是一些公共方法。
1
2
3
4
|
interface 接口名 { 公共操作方法列表 } |
例子如下:
1
2
3
4
5
|
interface I_Goods { public function sayName(); public function sayPrice(); } |
注意:
1.接口方法,訪問權(quán)限必須是公共的 public
2.接口內(nèi)只能有公共方法,不能存在成員變量
3.接口內(nèi)只能含有未被實(shí)現(xiàn)的方法,也叫抽象方法,但是不用abstract關(guān)鍵字。
類實(shí)現(xiàn)接口,利用關(guān)鍵字implements完成。
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
interface I_Goods { public function sayName(); public function sayPrice(); } class Goods implements I_Goods { public function sayName() { } public function sayPrice() { } } |
這樣,實(shí)現(xiàn)該接口的類,必須實(shí)現(xiàn)接口內(nèi)所有的抽象方法。而且可以肯定,該方法一定是公共的外部操作方法。
多實(shí)現(xiàn):該功能,在理論上可以通過抽象類來實(shí)現(xiàn),但是抽象類,不專業(yè)。
使用接口則專業(yè)些,實(shí)現(xiàn)上,因?yàn)?span style="color: #0000ff">php支持多實(shí)現(xiàn),而僅支持單繼承。
例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
interface I_Goods { public function sayName(); public function sayPrice(); } interface I_Shop { public function saySafe(); } class Goods implements I_Goods , I_Shop { public function sayName() { } public function sayPrice() { } public function saySafe() { } } |
接口之間也可以繼承
例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
interface I_Goods { public function sayName(); public function sayPrice(); } interface I_Shop extends I_Goods { public function saySafe(); } class Goods implements I_Shop { public function sayName() { } public function sayPrice() { } public function saySafe() { } } |
php對象接口的支持,可以定義類常量
例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
interface I_Goods { const PAI = 3.14; public function sayName(); public function sayPrice(); } interface I_Shop extends I_Goods { public function saySafe(); } class Goods implements I_Shop { public function sayName() { } public function sayPrice() { } public function saySafe() { } } echo Goods::PAI; |
運(yùn)行輸出:3.14