PHP

PHP基礎(13)ポリモーフィズム

オブジェクト指向の特徴である、継承、カプセル化をやりましたので、最後にポリモーフィズムを取り上げます。


ポリモーフィズム

ポリモーフィズムとは簡単に言うと、異なるインスタンス(オブジェクト)を、同じ名前のメソッドでそれぞれを操作することです。テクニックとしてインターフェースを使った例を書きます。

<?php

/* 商品インターフェース */
interface Product {
function getSalePrice();
}

/* 食べ物クラス */
class Food implements Product {
private $price = 100;
public function getSalePrice() {
// 3割引
return $this->price * 0.7;
}
}

/* 飲み物クラス */
class Drink implements Product {
private $price = 180;
public function getSalePrice() {
// 2割引
return $this->price * 0.8;
}
}

$food = new Food();
$drink = new Drink();
//それぞれのインスタンスを配列要素に入れる
$products = array($food, $drink);
//それぞれの価格を表示する
foreach($products as $product) {
echo "セール価格は".$product->getSalePrice()."円です。\n";
}
?>

クラスFoodとクラスDrinkはインターフェースProductを実装したクラスになります。インターフェースではセール価格を返すgetSalePriceメソッドを定義せよ、と言っていますので、クラスFoodとクラスDrinkにはgetSalePriceメソッドを持たせます。

クラスFoodとクラスDrinkのインスタンス(オブジェクト)を配列に入れて、その配列を列挙しながらgetSalePriceメソッドを呼ぶとそれぞれのオブジェクトのセール価格が取得できます。

このテクニックの利点は、異なったオブジェクトを同じレベルで参照・操作できることです。ポリモーフィズムと言うと仰々しいですが、プログラムのある機能やデータを一つの塊として捉え、その塊の似て非なる集合を、ある同じ切り口で扱えるので便利です。

<<PHP基礎(12)カプセル化