溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php抽象類有什么用

發(fā)布時間:2020-10-28 02:20:25 來源:億速云 閱讀:160 作者:小新 欄目:編程語言

小編給大家分享一下php抽象類有什么用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

抽象類往往用來表征對問題領(lǐng)域進行分析、設(shè)計中得出的抽象概念,是對一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。

抽象類是不完整的,它只能用作基類。在面向?qū)ο蠓椒ㄖ?,抽象類主要用來進行類型隱藏和充當(dāng)全局變量的角色。  

PHP 5 支持抽象類和抽象方法。定義為抽象的類不能被實例化。任何一個類,如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的。被定義為抽象的方法只是聲明了其調(diào)用方式(參數(shù)),不能定義其具體的功能實現(xiàn)。

繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬松)。

例如某個抽象方法被聲明為受保護的,那么子類中實現(xiàn)的方法就應(yīng)該聲明為受保護的或者公有的,而不能定義為私有的。

此外方法的調(diào)用方式必須匹配,即類型和所需參數(shù)數(shù)量必須一致。

例如,子類定義了一個可選參數(shù),而父類抽象方法的聲明里沒有,則兩者的聲明并無沖突。

這也適用于 PHP 5.4 起的構(gòu)造函數(shù)。在 PHP 5.4 之前的構(gòu)造函數(shù)聲明可以不一樣的。

抽象類示例

<?php
abstract class AbstractClass
{
 // 強制要求子類定義這些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . "\n";
    }
}

class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}

class ConcreteClass2 extends AbstractClass
{
    public function getValue() {
        return "ConcreteClass2";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') ."\n";
?>

以上例程會輸出:

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

看完了這篇文章,相信你對php抽象類有什么用有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI