オブジェクト指向プログラミングでは、ポリモーフィズムとは、異なるオブジェクトが同じメッセージに対して異なる応答をする能力を指します。 PHP では、ポリモーフィズムは主にインターフェイスと継承を通じて実現されます。この記事では、実際のコード例を通して、PHP におけるポリモーフィズムの概念を詳しく分析します。
まず、calculateArea メソッドを含むインターフェイス Shape を作成します。
interface Shape {
public function calculateArea();
}
次に、Circle と Square という 2 つのクラスを作成します。どちらも Shape インターフェイスを実装します。
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return round(pi() * pow($this->radius, 2), 2);
}
}
class Square implements Shape {
private $sideLength;
public function __construct($sideLength) {
$this->sideLength = $sideLength;
}
public function calculateArea() {
return pow($this->sideLength, 2);
}
}
次に、関数 getShapeArea を定義します。この関数は、Shape インターフェイスを実装するオブジェクトをパラメーターとして受け取り、その CalculateArea メソッドを呼び出します。
function getShapeArea(Shape $shape) {
return $shape->calculateArea();
}
これで、Circle オブジェクトと Square オブジェクトを作成し、getShapeArea 関数を使用してその面積を計算できるようになりました。
$circle = new Circle(5);
$square = new Square(4);
echo "円の面積:" . getShapeArea($circle) . ";";
echo "正方形の面積:" . getShapeArea($square) . "。";
この例では、Circle クラスと Square クラスの両方が Shape インターフェイスを実装し、calculateArea メソッドをオーバーライドします。 getShapeArea 関数に異なるオブジェクトを渡すことで、ポリモーフィズムが実現します。つまり、同じ関数が異なるオブジェクトに対して異なるロジックを実行します。
PHP のポリモーフィズムはインターフェイスと継承を通じて実装されており、異なるオブジェクトが同じメッセージに対して異なる応答を行うことができます。このメカニズムにより、コードの柔軟性とスケーラビリティが向上します。ポリモーフィズムを合理的に使用すると、コード構造が簡素化され、コードの再利用性が向上し、オブジェクト指向プログラムの保守性が向上します。