ホームページ >バックエンド開発 >PHPチュートリアル >継承、ポリモーフィズム、インターフェイス: PHP の 3 つの主要なオブジェクト指向機能

継承、ポリモーフィズム、インターフェイス: PHP の 3 つの主要なオブジェクト指向機能

WBOY
WBOYオリジナル
2023-05-11 15:45:061486ブラウズ

PHP は、PHP5 以降、オブジェクト指向プログラミング (OOP) をサポートするサーバー側プログラミング言語です。 OOP の中心的な考え方は、データと動作をオブジェクトにカプセル化して、プログラムの保守性とスケーラビリティを向上させることです。 PHP のオブジェクト指向プログラミングには、継承、ポリモーフィズム、インターフェイスという 3 つの大きな特徴があります。

1. 継承

継承とは、あるクラスが別のクラスからプロパティとメソッドを継承できることを意味します。継承されたクラスは親クラスまたは基本クラスと呼ばれ、継承されたクラスはサブクラスまたは派生クラスと呼ばれます。サブクラスは親クラスのプロパティとメソッドを継承し、それらをオーバーライドまたは拡張できます。

たとえば、属性 $name と $color、メソッド Eat() および sleep() を持つ動物クラス Animal を定義できます。次に、Animal クラスから継承して bark() メソッドを追加する犬クラス Dog を定義できます。

class Animal {
    protected $name;
    protected $color;
    
    public function eat() {
        echo "$this->name is eating.
";
    }
    
    public function sleep() {
        echo "$this->name is sleeping.
";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "$this->name is barking.
";
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->eat(); // 输出: Fido is eating.
$dog->sleep(); // 输出: Fido is sleeping.
$dog->bark(); // 输出: Fido is barking.

親クラスでは、キーワード protected を使用して属性 $name と $ を定義していることに注意してください。色。これは、親クラスと子クラス内でのみアクセスでき、クラス外からは直接アクセスできないことを意味します。サブクラスでは、キーワード public を使用して bark() メソッドを定義しました。これは、クラスの内部と外部の両方からアクセスできることを意味します。

2. ポリモーフィズム

ポリモーフィズムとは、オブジェクトが複数の形式で現れる可能性があることを意味します。オブジェクト指向プログラミングでは、ポリモーフィズムとは、プログラムの正確さに影響を与えることなく、サブクラスが親クラスを置き換えることができることを意味します。

たとえば、動物の情報を表示する show($animal) メソッドを持つ動物園クラス Zoo を定義できます。これで、さまざまな動物オブジェクトを show() メソッドに渡してポリモーフィズムを実現できるようになりました。

class Zoo {
    public function show($animal) {
        $animal->eat();
        $animal->sleep();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";

$zoo = new Zoo();
$zoo->show($dog); // 输出: Fido is eating. Fido is sleeping.
$zoo->show($cat); // 输出: Fluffy is eating. Fluffy is sleeping.

この例では、Animal クラスを継承し、eat () メソッドをオーバーライドする新しい猫クラス Cat を追加しました。犬と猫のオブジェクトを show() メソッドに渡すことができます。これらは両方とも Animal クラスのサブクラスであるため、多態性を実現できます。

3. インターフェイス

インターフェイスは、一連のメソッドを定義する仕様ですが、特定の実装はありません。 PHP では、クラスは特定の機能要件を満たすために 1 つ以上のインターフェイスを実装できます。

たとえば、動物の鳴き声を出力するための speech() メソッドを持つインターフェイス Speakable を定義できます。次に、犬クラスと猫クラスにこのインターフェイスを実装させます。

interface Speakable {
    public function speak();
}

class Dog extends Animal implements Speakable {
    public function bark() {
        echo "$this->name is barking.
";
    }
    
    public function speak() {
        $this->bark();
    }
}

class Cat extends Animal implements Speakable {
    public function meow() {
        echo "$this->name is meowing.
";
    }
    
    public function speak() {
        $this->meow();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->speak(); // 输出: Fido is barking.

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";
$cat->speak(); // 输出: Fluffy is meowing.

この例では、speak() メソッドを持つ Speakable インターフェイスを定義します。次に、Dog クラスと Cat クラスにこのインターフェイスを実装させ、speak() メソッドをそれぞれ実装させます。このようにして、犬と猫のオブジェクトの特定の実装を知らなくても、それらのオブジェクトで speech() メソッドを呼び出すことができます。

継承、ポリモーフィズム、インターフェイスは、PHP オブジェクト指向プログラミングの 3 つの主要な機能です。これらにより、コードをより適切に整理および管理し、コードの再利用性とスケーラビリティを向上させることができます。これらの機能を理解すると、PHP のオブジェクト指向プログラミング モデルをより深く理解できるようになります。

以上が継承、ポリモーフィズム、インターフェイス: PHP の 3 つの主要なオブジェクト指向機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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