php抽象類定義和具體應用

抽象類(abstract class)就是定一個一個公共的基類,而將特定的細節留給繼承者來實現。具體的說,當需要創建一個基礎的對象的時候,創建所需的某些方法並沒有完整定義出來時,就要用到抽象類。通過抽象概念可以讓讓項目架構擁有更好的擴展性。

例如:

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

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

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


}

?>

由於抽象類沒有爲聲明的所有方法定義實現內容,大家可能會將抽象類看作分部類。

抽象類可以不實現所有方法,它具有定義抽象方法的特殊能力,這些抽象方法只是缺少方法體的方法原型。當抽象類唄繼承的時候這些方法將被實現。

然而抽象類不一定只有抽象方法,我們也可以定義具有完整實現體的方法,

例如:

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";
    }

public function view(){

//直接調用方法

return $this->printOut();   

}

    

}


可以把抽象類看成一個模版,繼承抽象類,是去在模版裏面加上更多內容,當需要修改很多使用這套模版的頁面時,只用去修改模版本身即可。

發佈了33 篇原創文章 · 獲贊 17 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章