PHPの継承とは?クラスを引き継いで再利用する仕組みを解説
PHPのオブジェクト指向において、継承(inheritance)とは、あるクラスの機能を別のクラスで引き継いで使う仕組みのことです。
継承を使えば、重複したコードを書くことなく、共通の処理を再利用できます。
継承の基本構文
class 子クラス名 extends 親クラス名 {
// 子クラス独自のプロパティやメソッド
}
例:
class Animal {
public function speak() {
echo "なにかが鳴いています";
}
}
class Dog extends Animal {
public function speak() {
echo "ワンワン!";
}
}
$dog = new Dog();
$dog->speak(); // ワンワン!
Dog
クラスは Animal
クラスを継承しており、speak()
メソッドを上書き(オーバーライド)しています。
親クラスのメソッドを使う
子クラスから親クラスのメソッドを使いたいときは parent::メソッド名()
を使います。
class Cat extends Animal {
public function speak() {
parent::speak();
echo " ニャー!";
}
}
$cat = new Cat();
$cat->speak(); // なにかが鳴いています ニャー!
親クラスのコンストラクタを呼び出す
子クラスの __construct()
内で親のコンストラクタを使いたい場合は parent::__construct()
を使います。
class Animal {
public function __construct() {
echo "動物が生まれた!";
}
}
class Bird extends Animal {
public function __construct() {
parent::__construct();
echo " 鳥です!";
}
}
$bird = new Bird(); // 動物が生まれた! 鳥です!
アクセス修飾子と継承
public
:どこからでもアクセス可能
protected
:継承先からアクセス可能
private
:継承先からはアクセス不可
継承先でも使いたいプロパティやメソッドは public
または protected
にしましょう。
まとめ
extends
を使ってクラスを継承できる
- 親クラスの機能を子クラスで再利用できる
- 必要に応じてメソッドをオーバーライド可能
parent::
で親のメソッドやコンストラクタを呼び出せる
- アクセス修飾子で継承範囲を制御できる
継承は、共通の処理をまとめて、効率的なプログラムを書くための強力な手段です。
実際に継承を使ってコードを書きながら、その効果を体感してみましょう。