在面向對象編程中,繼承是代碼復用和擴展的核心機制。通過繼承,子類可以直接使用父類已有的屬性和方法,而無需重新編寫相同的邏輯,從而讓代碼結構更加簡潔高效。
class Person {
protected $name;
protected $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getName() {
return $this->name;
}
public function getAge() {
return $this->age;
}
}
class Student extends Person {
private $school;
public function __construct($name, $age, $school) {
parent::__construct($name, $age);
$this->school = $school;
}
public function getSchool() {
return $this->school;
}
}
$student = new Student("John Doe", 20, "Harvard University");
echo $student->getName(); // John Doe
echo $student->getAge(); // 20
echo $student->getSchool(); // Harvard University在上面的示例中,Person 類作為父類提供了基礎的屬性和方法,Student 類通過繼承擴展了父類功能,並添加了新的屬性$school 。這樣,子類不僅重用了父類的邏輯,還能靈活地拓展自己的行為。
多態允許不同的類以不同的方式實現相同的方法接口,從而使程序具備更好的靈活性和擴展性。在PHP 中,多態通常通過方法重寫(Override)實現。
class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function speak() {
echo "Animal speaks.";
}
}
class Cat extends Animal {
public function speak() {
echo "Meow!";
}
}
class Dog extends Animal {
public function speak() {
echo "Woof!";
}
}
$animals = [new Cat("Kitty"), new Dog("Buddy")];
foreach ($animals as $animal) {
echo $animal->getName() . ": ";
$animal->speak();
echo "<br>";
}上述示例展示了多態的實際效果。雖然Cat 和Dog 類都繼承自Animal,但各自重寫了speak()方法。當調用該方法時,會根據實際對像類型輸出不同的結果,從而體現了多態的靈活性。
在真實項目中,繼承與多態能夠大幅提升代碼的可維護性和擴展能力。常見的應用場景包括:
繼承與多態是PHP 面向對象編程的重要支撐點。繼承讓代碼實現模塊化與復用,多態則讓程序具備靈活的擴展能力。理解並熟練掌握這兩大特性,能夠幫助開發者構建出更具可讀性、可維護性和可擴展性的應用程序。