PHP物件導向開發之類中介面的應用(interface、implements)_PHP教程

來源:互聯網
上載者:User
php類中介面的應用關鍵字是interface、implements了,介面是一種成員屬性全部為抽象或常量的特殊抽象類別,下面我們看幾個執行個體。

類中介面的應用

1.關鍵字:interface
2.關鍵字:implements

1.介面的介紹與建立

介面:一種成員屬性全部為抽象或常量的特殊抽象類別。

規則:

1.類中全部為抽象方法。
2.抽象方法錢不用加abstract。
3.介面抽象方法屬性為public。
4.成員屬性必須為常量。

格式:

代碼如下 複製代碼

interface demo {
const NAME = "常量對象屬性";

function fun1();
function fun2(); //抽象方法。
}


2.介面的應用與規範

介面引用區別於類繼承關鍵字 extends ,繼承只能只是單一性,而介面可以使用關鍵字 implements 多個引用並用逗號分開

1.格式:普通類引用介面

class MyPc implements demo , demo2 , demo3 {
...
}

2.格式:抽象類別應用介面例子

abstract class MyPc implements demo , demo2 , demo3 {
...
}

3.格式:繼承父類引用介面並存

class MyPc extends Root implements demo , demo2 , demo3 {
...
}

先繼承後介面,單繼承多介面。

4.格式:介面與介面的繼承

interface demo3 extends demo {
...
}

執行個體:

代碼如下 複製代碼

interface demo {
const NAME = "名稱";
function fun1();
function fun2();
}

interface demo2 {
function fun3();
function fun4();
}

interface demo3 {
const TEST = "Test";
function fun5();
}

class MyPc implements demo, demo2 {
function fun1() {
echo "++++++++++
";
}
function fun2() {
echo "----------
";
}
function fun3() {
echo "1111111111
";
}
function fun4() {
echo "2222222222
";
}
}

class MyPs extends MyPc implements demo3 {
function fun5() {
echo "繼承類後引用介面";
}
}
$p = new MyPs;
$p->fun1();
$p->fun2();
$p->fun3();
$p->fun4();
$p->fun5();
?>

介面使用關鍵字 interface 來定義,並使用關鍵字 implements 來實現介面中的方法,且必須完全實現。

例子:

代碼如下 複製代碼

//定義介面
interface User{
function getDiscount();
function getUserType();
}
//VIP使用者 介面實現
class VipUser implements User{
// VIP 使用者折扣係數
private $discount = 0.8;
function getDiscount() {
return $this->discount;
}
function getUserType() {
return "VIP使用者";
}
}
class Goods{
var $price = 100;
var $vc;
//定義 User 介面型別參數,這時並不知道是什麼使用者
function run(User $vc){
$this->vc = $vc;
$discount = $this->vc->getDiscount();
$usertype = $this->vc->getUserType();
echo $usertype."商品價格:".$this->price*$discount;
}
}

$display = new Goods();
$display ->run(new VipUser); //可以是更多其他使用者類型
?>

運行該例子,輸出:

VIP使用者商品價格:80 元

該例子示範了一個 PHP 介面的簡單應用。該例子中,User 介面實現使用者的折扣,而在 VipUser 類裡面實現了具體的折扣係數。最後商品類 Goods 根據 User 介面來實現不同的使用者報價。

該例子僅限於示範 PHP 介面的用法,不涉及其科學與否。

實現多個介面

PHP也可以在繼承一個類的時候同時實現多個介面:

class 子類 extends 父類 implemtns 介面1, 介面2, ...
{
......
}


抽象類別和介面的區別


介面是特殊的抽象類別,也可以看做是一個模型的規範。介面與抽象類別大致區別如下:

1.一個子類如果 implements 一個介面,就必須實現介面中的所有方法(不管是否需要);如果是繼承一個抽象類別,只需要實現需要的方法即可。
2.如果一個介面中定義的方法名改變了,那麼所有實現此介面的子類需要同步更新方法名;而抽象類別中如果方法名改變了,其子類對應的方法名將不受影響,只是變成了一個新的方法而已(相對老的方法實現)。
3.抽象類別只能單繼承,當一個子類需要實現的功能需要繼承自多個父類時,就必須使用介面。

http://www.bkjia.com/PHPjc/632642.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632642.htmlTechArticlephp類中介面的應用關鍵字是interface、implements了,介面是一種成員屬性全部為抽象或常量的特殊抽象類別,下面我們看幾個執行個體。 類中介面的應...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.