首頁 >後端開發 >php教程 >php物件導向OOP—介面interface

php物件導向OOP—介面interface

WBOY
WBOY原創
2016-08-08 09:23:08933瀏覽

PHP與大多數物件導向程式語言一樣,不支援多重繼承。也就是說每個類別只能繼承一個父類別。為了解決這個問題,PHP引入了接​​口,接口的想法是指定了一個實現了該接口的類別必須實現的一系列方法。介面是一種特殊的抽象類,抽象類別又是一種特殊的類,所以介面也是一種特殊的類,為 什麼說介面是一種特殊的抽象類別呢?如果一個抽象類別裡面的所有的方法都是抽象方法,那麼我們就換一種宣告方法使用「介面」;也就是說介面裡面所有的方法必須都是宣告為抽象方​​法,另外介面裡面不能宣告變數(但可宣告常數constant),而且介面裡面所有的成員都是public權限的。所以子類別在實作的時候 也一定要使用public權限實限。

聲明一個類的時候我們使用的關鍵字是“class”,而接口一種特殊的類,使用的關鍵字是“interface”;

類的定義:  class 類名{ … } ,
介面的聲明:interface 介面名稱{ …}

//定義一個介面使用interface關鍵字,「One」為介面名稱
interface One
{

/定義一個常數

const constant = 'constant value';
//定義了一個抽象方法”fun1”
public function fun1(); ();
}
?>

上例中定義了一個介面“one”,裡面聲明了兩個抽象方法“fun1”和”fun2”,因為介面裡面所有的方法都是抽象方法,所以在宣告抽象方法的時候就不用像抽象類別那樣使用「abstract」這個關鍵字了,預設的已經加上這個關鍵字,另外在介面裡邊的」public」這個存取權限也可以去掉,因為預設就是public的,因為介面裡所有成員都要是公有的,所在對於介面裡面的成員我們就不能使用「private」的和「protected」的權限了,都要用public或是預設的。另外在介面裡面我們也宣告了一個常數「constant「, 因為在介面裡面不能用變數成員,所以我們要用 const這個關鍵字聲明。

因為介面是一種特殊的抽象類,裡面所有的方法都是抽象方法,所以介面也不能產生實例物件; 它也做為一種規範,所有抽象方法都需要子類別去實作。

我們可以使用”extends”關鍵字讓一個接口去繼承另一個接口:

//使用”extends”繼承另外一個接口
interface Two extends One
{
function fun3();
function fun4();
}
?>

而我們定義中的子類“implements”,而不是我們前面所說的“extends”;

//使用“implements”這個去實現接口中的抽象方法間class Three implements One
{


function fun1() {
...
}
function fun2(實現了全部方法,我們去可以使用子類別去實例化物件了$three=new Three();?>










介面中的部分抽象方法,但要想實例化對象,這個抽象類別還要有子類別把它所有的抽象方法都實現才行;
在前面我們說過,PHP是單繼承的,一個類別只能有一父類,但是一個類可以實現多個接口,就相當於一個類要遵守多個規範,就像我們不僅要遵守國家的法律,如果是在學校的話,還要遵守學校的校規一樣;
//使用implements實作多個介面

class Four implemtns 介面一, 介面二, ...{//必須把所有介面中的方法都要實作才可以實例化物件。 }
?>

PHP中不僅一個類別可以實作多個接口,也可以在繼承一個類別的同時實作多個介面, 一定要先繼承類別去實作介面;




//使用extends繼承一個類,使用implements實作多個介面
class Four extends 類別名稱一implemtns 介面一, 介面二, ...
{
中的方法都要實現才可以實例化物件
...
}?>


上面的內容引自大白」🎜小炒花生米🎜🎜🎜上面的內容引自大白」🎜小炒。 🎜🎜🎜

以上就介紹了php物件導向OOP—介面interface,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn