オブジェクト指向を使う上で、欠かせないのが継承です。
ですが、PHP初心者にとって継承の概念は分かりづらいですよね。
そこで今回はPHP初心者に向けて、
- ・継承とは何か?
- ・継承の使い方
を紹介します。
PHP初心者がつまづきやすいポイントを分かりやすく解説します。
継承っていまいち分からない方は、ぜひ最後まで読んで理解を深めてくださいね。
継承とは?
オブジェクト指向では、クラスを使って書いていくのは大丈夫かと思います。
しかし、いくつかのクラスを作っている中で似たようなクラスが必要になることがあります。
そこで使えるのが「継承」です。
継承とは、
・既存のクラスを拡張して自身のクラスを作る方法
です。
例えば「車」で考えてみましょう。
1 2 3 4 5 6 7 |
class Car{ public $color; public function start(){ echo '発進します' } } |
ここにCarクラスがあります。
この時に追加でトラックのクラスを作りたいとします。
同じようにTruckクラスを作っても良いのですが、トラックも車の一部ですなので、属性や機能など共通のものが多いはずです。
そこで、もともとあるCarクラスを利用して、Truckクラスを作ってみましょう。
ここで使えるのが「継承」です。
継承の書き方
クラスの継承をするには、extendを使います。
書き方は
class 子クラス extend 親クラス { }
です。
1 2 3 |
class Truck extend Car{ public $company; } |
これでCarクラスを親として、Truckクラスを作ることができました。
クラスの継承をすることにより、子クラスは親クラスのプロパティやメソッドを受け継ぐことができます。
さらに、子クラスでのみ利用したいプロパティやメソッドを追加する事もできます。
ここでは $company のプロパティを追加しました。
1 2 3 4 5 6 |
$yamato = new Truck(); $yamato -> color = 'yellow'; $yamato -> company = 'yamato'; $yamato -> start(); // 発進します |
Carクラスで定義した$colorプロパティやstart()メソッドも利用することができます。
メソッドのオーバーライド
継承した子クラスでは、親クラスのメソッドをそのまま使うのではなく、独自のメソッドへ上書きすることができます。
これを「オーバーライド」と言います。
オーバーライドするには、親クラスのメソッドと同名のメソッドを子クラスで上書きします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Car{ public function start(){ echo '発進します' } } class Truck extend Car{ public function start(){ // Carクラスのstart()メソッドを上書き echo '車が動きます、ご注意ください'; } } $car1 = new Car(); $truck1 = new Truck(); $car1 -> start(); // 発進します $truck1 -> start(); // 車が動きます、ご注意ください |
このように、Truckクラスではstart()メソッドの内容が変更されています。
継承をうまく使うことで、1つのクラスから複数のクラスを作り出すことが簡単にできます。
また、stop()など新しいメソッド追加したい場合、親クラスに追加するだけで子クラス全体に反映させる事もできます。
まとめ
今回は継承について、
- ・継承とは何か?
- ・クラス継承の書き方
- ・メソッドのオーバーライド
を解説しました。
継承はオブジェクト指向の中で重要な機能なので、しっかりと理解できるようにしましょう。