php 抽象類

    PHP 支持抽象類和抽象方法。定義爲抽象的類不能被實例化。任何一個類,若是它裏面至少有一個方法是被聲明爲抽象的,那麼這個類就必須被聲明爲抽象的。被定義爲抽象的方法只是聲明瞭其調用方式(參數),不能定義其具體的功能實現。php

繼承一個抽象類的時候,子類必須定義父類中的全部抽象方法;另外,這些方法的訪問控制必須和父類中同樣(或者更爲寬鬆)。例如某個抽象方法被聲明爲受保護的,那麼子類中實現的方法就應該聲明爲受保護的或者公有的,而不能定義爲私有的。此外方法的調用方式必須匹配,即類型和所需參數數量必須一致。例如,子類定義了一個可選參數,而父類抽象方法的聲明裏沒有,則二者的聲明並沒有衝突。spa

例如:code

 

<?php
abstract class AbstractClass
{
    // 咱們的抽象方法僅須要定義須要的參數
    abstract protected function prefixName($name);
}

class ConcreteClass extends AbstractClass
{

    // 咱們的子類能夠定義父類簽名中不存在的可選參數
    public function prefixName($name) {
        if ($name=="Pacman") {
            $prefix = "先生";
        } elseif ($name == "Pacwoman") {
            $prefix = "女士";
        } else {
            $prefix = "";
        }
        return "{$prefix}{$name}";
    }
}

$class = new ConcreteClass;
echo $class->prefixName("Pacman"), "\n";
echo $class->prefixName("Pacwoman"), "\n";
 
//最終會輸出
//先生Pacman
//女士Pacwoman

?>
相關文章
相關標籤/搜索