PHP 5 支援抽象類別和抽象方法。定義為抽象的類別不能被實例化。任何一個類,如果它裡面至少有一個方法是被聲明為抽象的,那麼這個類別就必須被宣告為抽象的。被定義為抽象的方法只是聲明了其呼叫方式(參數),不能定義其特定的功能實作。
注意:
繼承一個抽象類別的時候,子類別必須定義父類別中的所有抽象方法;
另外,這些方法的存取控制必須和父類別中一樣(或更為寬鬆)。
方法的呼叫方式必須匹配,即類型和所需參數數量必須一致。
範例:
<?phpabstract class AbstractClass{ // 我们的抽象方法仅需要定义需要的参数 abstract protected function prefixName($name);}class ConcreteClass extends AbstractClass{ // 我们的子类可以定义父类签名中不存在的可选参数 // 该访问控制只能是公有的(public)或受保护(protected)的 public function prefixName($name, $separator = ".") { if ($name == "Pacman") { $prefix = "Mr"; } elseif ($name == "Pacwoman") { $prefix = "Mrs"; } else { $prefix = ""; } return "{$prefix}{$separator} {$name}"; } }$class = new ConcreteClass;echo $class->prefixName("Pacman"), "\n";echo $class->prefixName("Pacwoman"), "\n";?>
結果:
Mr. Pacman Mrs. Pacwoman
分析:
雖然子類別定義了一個可選參數,而父類別抽象方法的宣告裡沒有,但和注意中的第三點並無衝突
相關推薦:
#以上是php抽象類別詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!