ホームページ >バックエンド開発 >PHPチュートリアル >PHP で継承、ポリモーフィズム、インターフェイスを使用する方法

PHP で継承、ポリモーフィズム、インターフェイスを使用する方法

王林
王林オリジナル
2023-06-23 11:49:551394ブラウズ

PHP は、サーバーサイド プログラミング用のオープンソース スクリプト言語であり、世界で最も人気があり、広く使用されているプログラミング言語の 1 つとなっています。 PHP では、継承、ポリモーフィズム、インターフェイスが 3 つの重要なオブジェクト指向プログラミング概念であり、これにより開発者はコードの再利用、柔軟性、保守性において大きな利点を得ることができます。この記事では、これら 3 つの概念を詳しく説明し、PHP での使用方法を紹介します。

  1. 継承

継承は、オブジェクト指向プログラミングにおける最も基本的な概念の 1 つです。これは、クラスが別のクラスのプロパティとメソッドを継承し、これに基づいてカスタム プロパティとメソッドを追加できることを意味します。サブクラス化は、親クラス (スーパークラスまたは基本クラスとも呼ばれます) を拡張することによって実現され、サブクラスが親クラスのコードと機能を再利用できるようになります。

PHP では、継承はキーワード「extends」を使用して行われます。たとえば、次のコードは単純な継承の実装です。

class Person {
  // 定义一个方法
  public function sayHello() {
    echo "Hello, world!";
  }
}

class Student extends Person {
  // 定义一个新的方法
  public function sayGoodbye() {
    echo "Goodbye, world!";
  }
}

// 使用子类的对象
$student = new Student();
$student->sayHello();  // 输出 “Hello, world!”
$student->sayGoodbye();  // 输出 “Goodbye, world!”

この例では、Person という名前のクラスを定義し、その中に SayHello() という名前のメソッドを定義します。次に、Student というサブクラスを作成し、「extends」キーワードを使用してそれを person クラスに拡張しました。サブクラスに、sayGoodbye() という新しいメソッドを追加しました。最後に、$student という名前の Student クラスのインスタンスを作成し、そのメソッドを呼び出します。

サブクラスが親クラスを継承すると、そのプロパティとメソッドを継承できるだけでなく、非プライベートのプロパティやメソッドにもアクセスできることに注意してください。実際、プライベート プロパティとメソッドの場合、親クラスから継承した後でもサブクラスはそれらにアクセスできません。

  1. ポリモーフィズム

ポリモーフィズムは、オブジェクト指向プログラミングのもう 1 つの重要な概念であり、同じメソッドが異なる状況下では異なる動作をする可能性があるという事実を指します。ポリモーフィズムを備えたメソッドは、実行時に呼び出す必要がある実際のメソッドを自動的に決定できるため、プログラムの柔軟性とスケーラビリティが大幅に向上します。

PHP でポリモーフィズムを実現する方法は、キーワード「抽象」と「インターフェース」を使用することです。抽象クラスまたはインターフェイスを定義し、抽象クラスを継承するかインターフェイスを実装することにより、ポリモーフィズムを実現できます。

2.1 抽象クラス

抽象クラスはインスタンス化できず、他のクラスのスーパークラスとしてのみ継承できるクラスです。抽象クラスは、そのサブクラスで実装する必要があるいくつかの抽象メソッドを定義できます。このようにして、抽象クラスを通じてポリモーフィズムを実現できます。

次は、抽象クラスを使用してポリモーフィズムを実現する例です:

abstract class Shape {
  // 定义一个抽象方法
  abstract public function getArea();
}

class Circle extends Shape {
  private $radius;

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

  // 实现抽象方法
  public function getArea() {
    return pi() * pow($this->radius, 2);
  }
}

class Square extends Shape {
  private $side;

  public function __construct($side) {
    $this->side = $side;
  }
  
  // 实现抽象方法
  public function getArea() {
    return pow($this->side, 2);
  }
}

// 创建一个圆
$circle = new Circle(2);
// 创建一个正方形
$square = new Square(2);

// 输出面积
echo $circle->getArea();  // 输出 "12.566370614359"
echo $square->getArea();  // 输出 "4"

この例では、抽象クラス Shape を定義し、getArea() メソッドという名前の抽象化を宣言します。次に、Circle と Square の 2 つのサブクラスを作成し、それぞれ getArea() メソッドを実装しました。最後に、円と正方形のインスタンスを作成し、それらの getArea() メソッドを呼び出します。

2.2 インターフェイス

インターフェイスは、メソッド シグネチャのセットを定義する抽象型です (ただし、これらのメソッドは実装しません)。クラスは、このインターフェイスを実装して、このインターフェイスによって定義された動作を表現できます。 。 コミットメント。このようにして、インターフェースを通じてもポリモーフィズムを実現できます。 PHP では、キーワード「interface」を使用してインターフェースを定義し、キーワード「implements」を使用してインターフェースを実装できます。

次は、インターフェイスを使用してポリモーフィズムを実現する例です:

interface Animal {
  public function makeSound();
}

class Dog implements Animal {
  public function makeSound() {
    echo "Woof!";
  }
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow!";
  }
}

// 创建一个狗
$dog = new Dog();
// 创建一只猫
$cat = new Cat();

// 输出声音
$dog->makeSound();  // 输出 "Woof!"
$cat->makeSound();  // 输出 "Meow!"

この例では、Animal インターフェイスを定義し、makeSound() という名前のメソッドを宣言します。次に、Animal インターフェイスを実装する 2 つのサブクラス Dog と Cat を作成し、それぞれ makeSound() メソッドを実装しました。最後に、犬と猫のインスタンスを作成し、それらの makeSound() メソッドを呼び出します。

インターフェイスでは抽象メソッドのみを定義でき、これらのメソッドはインターフェイスを実装するクラスによって実装される必要があることに注意してください。

  1. 概要

継承、ポリモーフィズム、インターフェイスは 3 つの重要なオブジェクト指向プログラミング概念であり、PHP でも広く使用されています。継承を使用すると、あるクラスに別のクラスからプロパティとメソッドを継承させ、その上にカスタム プロパティとメソッドを追加できます。ポリモーフィズムを使用すると、異なる状況で同じメソッド名を通じて異なる動作を持つメソッドを呼び出すことができます。インターフェイスを使用すると、一連のメソッド シグネチャを定義し、インターフェイスを実装するクラスによってこれらのメソッドを実装できます。

PHP オブジェクト指向プログラムを作成する場合、継承、ポリモーフィズム、インターフェイスの 3 つの概念を合理的に使用すると、プログラムがより柔軟でスケーラブルになり、保守が容易になります。

以上がPHP で継承、ポリモーフィズム、インターフェイスを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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