本文作為抽象類專題的補充說明,通過圖示與更豐富的代碼示例,進一步闡述抽象類在實際開發中的應用場景與注意事項。
抽象方法:僅聲明無實現的方法,需加 abstract 修飾。
抽象類:包含抽象方法的類,不可實例化,強制子類實現所有抽象方法。
abstract class class1 {
abstract function fun1();
// ...
}
三要素:① 類含抽象方法 ② 方法無大括號 ③ 方法加 abstract 關鍵字
<?php
abstract class User {
abstract protected function getUser(); // 抽象方法
public function print_content() {
print $this->getUser(); // 模板方法調用抽象方法
}
}
class vipUser extends User {
protected function getUser() {
return "抽象類與抽象方法實現";
}
}
$user = new vipUser();
$user->print_content(); // 輸出實現內容
?>
<?php
abstract class User {
protected static $sal = 0;
static abstract function getSal();
static abstract function setSal($sal);
}
class VipUser extends User {
static function getSal() {
return self::$sal;
}
static function setSal($sal) {
self::$sal = $sal;
}
}
VipUser::setSal(100);
echo "薪資: " . VipUser::getSal(); // 輸出:薪資: 100
?>
抽象方法可用 public、protected,不可用 private(子類無法重寫)。建議使用 protected 封裝內部邏輯,public 暴露對外接口。
合理運用抽象類,能構建清晰的層次結構,實現「依賴倒置」,提升系統可擴展性。