首頁 >後端開發 >php教程 >PHP 物件導向程式設計進階:理解多型態和繼承

PHP 物件導向程式設計進階:理解多型態和繼承

王林
王林原創
2024-05-08 18:06:01586瀏覽

在物件導向程式設計中,多態性允許物件以不同的方式回應相同方法調用,而繼承性允許子類別繼承和擴展父類別功能。多態性表現為不同類型物件對同一方法的差異化反應,如動物類、狗類和貓類對象的 speak() 方法。繼承性則體現在子類別從父類別繼承資料和方法,如員工類別從人類類別繼承姓名和年齡,並新增薪資屬性。在實際案例中,獼猴桃類繼承水果類的水果名稱,而跑車類透過多態性重寫父類中的getType() 方法,實現了對汽車類中相同方法的不同響應,分別返回「汽車」和“跑車”的類型資訊。

PHP 对象导向编程进阶:理解多态和继承

PHP 物件導向程式設計進階:理解多態和繼承

概述

多型態和繼承是物件導向程式設計(OOP) 的兩個基本概念。多態允許物件以不同的方式響應相同的方法調用,而繼承允許創建新類,它們繼承並擴展現有類別的功能。

多態

多態允許物件根據其類型執行不同的操作。

class Animal {
    public function speak() {
        echo "Animal speaks\n";
    }
}

class Dog extends Animal {
    public function speak() {
        echo "Dog barks\n";
    }
}

class Cat extends Animal {
    public function speak() {
        echo "Cat meows\n";
    }
}

$dog = new Dog();
$dog->speak();  // 输出:Dog barks

$cat = new Cat();
$cat->speak();  // 输出:Cat meows

繼承

繼承允許建立新類別(子類別),這些類別從現有類別(父類別)繼承資料和方法。

class Person {
    protected $name;
    protected $age;

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

    public function getName() {
        return $this->name;
    }
}

class Employee extends Person {
    private $salary;

    public function __construct($name, $age, $salary) {
        parent::__construct($name, $age);  // 调用父类构造函数
        $this->salary = $salary;
    }

    public function getSalary() {
        return $this->salary;
    }
}

$employee = new Employee("John Doe", 30, 50000);
echo "Employee name: " . $employee->getName() . "\n";
echo "Employee salary: " . $employee->getSalary() . "\n";

實戰案例

水果類和獼猴桃類(繼承)

class Fruit {
    protected $name;

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

    public function getName() {
        return $this->name;
    }
}

class Kiwi extends Fruit {
    public function __construct() {
        parent::__construct("Kiwi");
    }
}

$kiwi = new Kiwi();
echo "Fruit name: " . $kiwi->getName() . "\n";

汽車類和跑車類(多態)

class Car {
    protected $make;
    protected $model;

    public function __construct($make, $model) {
        $this->make = $make;
        $this->model = $model;
    }

    public function getType() {
        return "Car";
    }
}

class SportsCar extends Car {
    public function getType() {
        return "Sports Car";
    }
}

$car = new Car("Toyota", "Camry");
$sportsCar = new SportsCar("Ferrari", "F430");

echo "Car type: " . $car->getType() . "\n";
echo "Sports car type: " . $sportsCar->getType() . "\n";

以上是PHP 物件導向程式設計進階:理解多型態和繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn