オブジェクト指向の特徴である、継承、カプセル化をやりましたので、最後にポリモーフィズムを取り上げます。
#ポリモーフィズム
ポリモーフィズムとは簡単に言うと、異なるインスタンス(オブジェクト)を、同じ名前のメソッドでそれぞれを操作することです。テクニックとしてインターフェースを使った例を書きます。
<?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)カプセル化]
(https://qiita.com/taka027/items/c821b089b1e88fe8a241)