ポリモーフィズム

継承とインターフェース

オーバーライドはスーパークラスのメソッドを上書きし、サブクラス独自のメソッドに再定義します。これによって、どのクラスをインスタンス化するかによって呼び出すメソッドが決められます。これをポリモーフィズム(多態性)といいます。要は複数のクラスで同じメソッド名を用いてそれぞれの処理を行うことです。

サブクラスでポリモーフィズム

スーパークラスで定義したメソッドをサブクラスでオーバーライドして実行してみましょう。

<?php
class A {
  public $name;
  public function show(){
    print "スーパークラスですよ";
  }
}
?>
<?php
require_once 'Super.php';
  class Sub1 extends Super {
    public function show(){
      print "サブ1クラスですよ";
    }
  }
?>
<?php
require_once 'Super.php';
  class Sub2 extends Super {
    public function show(){
      print "サブ2クラスですよ";
    }
  }
?>

では実行してみましょう。

<html>
<head>
<meta charset="utf-8">
<title>parent</title>
</head>
<body>
<?php
require_once 'Sub1.php';
require_once 'Sub2.php';

$obj1 = new Sub1();
$obj2 = new Sub2();
$obj1->show();
$obj2->show();
?>
</body>
</html>

コメント

タイトルとURLをコピーしました