當前位置: 首頁> 最新文章列表> PHP面向對象深入解析:繼承與多態的實戰指南

PHP面向對象深入解析:繼承與多態的實戰指南

M66 2025-07-21

理解PHP中的繼承

繼承是面向對象編程的重要機制,它允許一個類基於另一個類創建新類,子類可以繼承父類的屬性和方法,從而實現代碼復用和擴展。在PHP中,關鍵字extends用於創建子類,而parent::則用於調用父類的成員方法或屬性。

繼承的示例代碼

class Animal {
   protected $name;
   protected $age;

   public function __construct($name, $age) {
      $this->name = $name;
      $this->age = $age;
   }

   public function getInfo() {
      return "Name: " . $this->name . ", Age: " . $this->age;
   }
}

class Dog extends Animal {
   public function bark() {
      return "Woof!";
   }
}

$dog = new Dog("Rex", 3);
echo $dog->getInfo();  // 輸出 "Name: Rex, Age: 3"
echo $dog->bark();     // 輸出 "Woof!"

以上代碼展示了一個動物基類Animal ,它擁有nameage屬性及獲取信息的方法。子類Dog繼承了這些屬性和方法,並新增了bark()方法,體現了繼承的基本用法。

PHP多態的實現方式

多態指的是同一接口或方法在不同類的對像中展現出不同的行為。在PHP中,多態主要通過接口( interface )和抽像類( abstract class )實現。接口定義了方法規範,而抽像類則提供部分實現,子類必須具體實現抽象方法。這樣可以使代碼更加靈活和可擴展。

多態示例:接口與實現類

interface Shape {
   public function area();
   public function perimeter();
}

class Rectangle implements Shape {
   private $length;
   private $width;

   public function __construct($length, $width) {
      $this->length = $length;
      $this->width = $width;
   }

   public function area() {
      return $this->length * $this->width;
   }

   public function perimeter() {
      return 2 * ($this->length + $this->width);
   }
}

class Circle implements Shape {
   private $radius;

   public function __construct($radius) {
      $this->radius = $radius;
   }

   public function area() {
      return pi() * pow($this->radius, 2);
   }

   public function perimeter() {
      return 2 * pi() * $this->radius;
   }
}

$rectangle = new Rectangle(5, 3);
$circle = new Circle(2);

echo $rectangle->area();     // 輸出 15
echo $rectangle->perimeter();  // 輸出 16

echo $circle->area();        // 輸出 12.566370614359
echo $circle->perimeter();   // 輸出 12.566370614359

在示例中, RectangleCircle都實現了Shape接口,必須定義area()perimeter()方法。不同的實現使同一方法具有不同的行為,這正是多態的體現。

總結

繼承和多態是PHP面向對象編程的基礎,掌握這兩者可以大大提升代碼的組織性和復用性。繼承允許子類獲得父類的屬性和方法,避免重複代碼;多態通過接口或抽像類讓同一方法在不同對像中表現出多樣行為,從而增強代碼的靈活性。本文提供的示例代碼適合初學者理解這些概念,助力開發更高質量的PHP程序。