はじめに
継承についてまとめる
継承とは
基になるクラスの機能(メソッド)を引き継ぎながら、新たな機能を追加したり、元の一部だけを修正したりする仕組み。
参考コード
BusinessPersonクラスがPersonクラスを継承している。
Person.php
class Person
{
public $firstName;
public $lastName;
public function __construct($firstName, $lastName)
{
$this->firstName = $firstName;
$this->lastName = $lastName;
}
public function show()
{
print "<p>私の名前は{$this->lastName}{$this->firstName}です。</p>";
}
}
BusinessPerson.php
require_once 'Person.php';
class BusinessPerson extends Person
{
public function work(): void
{
print "<p>{$this->lastName}{$this->firstName}は働いています。</p>";
}
}
extends.php
require_once 'BusinessPerson.php';
$bp = new BusinessPerson('鈴木', '太郎');
$bp->work(); // 鈴木太郎は働いています
$bp->show(); // 私の名前は鈴木太郎です
BusinessPerson
クラスで定義されたwork
メソッドだけでなく、親クラスであるPerson
クラスで定義されたコンストラクターやshow
メソッドをあたかもBusinessPerson
クラスのメンバーであるかのように呼び出すことができている。
どんなときに継承を使うべきか
親クラスと子クラスにis-aの関係が成り立つとき。
→「SubClass is a SuperClass」であるとき
参考コードにおける、class BusinessPerson extends Person
というコードは、
「BusinessPerson
(ビジネスパーソン)はPerson
(人間)」であるため、継承は使い道として適切。
間違った例を挙げると、class BusinessPerson extends Food
というコードは
「BusinessPerson
(ビジネスパーソン)はFood
(食べ物)」ではないことから、使い道として適切ではない。