ホームページ >バックエンド開発 >PHPチュートリアル >PHP オブジェクト指向プログラミングの上級: ポリモーフィズムと継承について理解する

PHP オブジェクト指向プログラミングの上級: ポリモーフィズムと継承について理解する

王林
王林オリジナル
2024-05-08 18:06:01584ブラウズ

オブジェクト指向プログラミングでは、ポリモーフィズムによりオブジェクトが同じメソッド呼び出しにさまざまな方法で応答できるようになり、継承によりサブクラスが親クラスの関数を継承および拡張できるようになります。ポリモーフィズムは、動物、犬、猫オブジェクトの speech() メソッドなど、同じメソッドに対するさまざまなタイプのオブジェクトの異なる応答として現れます。継承は、親クラスからデータとメソッドを継承するサブクラスに反映されます。たとえば、従業員クラスは人間クラスから名前と年齢を継承し、新しい給与属性を追加します。実際のケースでは、kiwi クラスはフルーツ クラスのフルーツ名を継承しますが、スポーツ カー クラスはポリモーフィズムを通じて親クラスの getType() メソッドを書き換え、カー クラスの同じメソッドに対する異なる応答を実現し、「car」を返します。 「スポーツカー」のタイプ情報。

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

高度な PHP オブジェクト指向プログラミング: ポリモーフィズムと継承を理解する

概要

ポリモーフィズムと継承は、オブジェクト指向プログラミング (OOP) の 2 つの基本概念です。ポリモーフィズムにより、オブジェクトは同じメソッド呼び出しにさまざまな方法で応答できます。一方、継承により、既存のクラスの機能を継承および拡張する新しいクラスの作成が可能になります。

ポリモーフィズム

ポリモーフィズムにより、オブジェクトはその型に応じて異なる操作を実行できます。

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";

実用的なケース

Fruitクラスとkiwiクラス(継承)

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";

Carクラスとスポーツカークラス(ポリモーフィズム)

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。