feeds2011/09/15カテゴリー:PHPPHPのクラスの継承Tweetクラスの継承とは、定義済みのクラスの機能を引き継いで、新しいクラスを定義することです。このとき、継承する基のクラスをスーパークラス(親クラス、基底クラス)といい、継承して新たに作られるクラスをサブクラス(小クラス、派生クラス)といいます。継承をうまく利用することで、より効率的にプログラミングすることができます。目次クラスの継承parentキーワードオーバーライドfinalキーワード遅延静的束縛クラスの継承クラスを継承するには、クラス定義の際、クラス名の後にextendsキーワードでスーパークラスを指定します。継承して作られたサブクラスは、スーパークラスのプロパティやメソッドを使用することができます。アクセス修飾子でprivateに指定されたプロパティやメソッドは使用できません。PHPでは、多重継承(複数のクラスを同時に継承)はできません。継承して作られたサブクラスをさらに継承することは可能です。下記の例では、サブクラスでスーパークラスに定義されたプロパティやメソッドを使用しています。staticFunc()?&gt;parentキーワードparentキーワードとスコープ定義演算子"::"を使うことで、サブクラスからスーパークラスにアクセスすることができます。下記の例では、parent::を通して、サブクラスのコンストラクタからスーパークラスのコンストラクタを呼んでいます。下記のようにサブクラスでコンストラクタを定義した場合、スーパークラスのコンストラクタは自動では呼ばれなくなります。サブクラスでコンストラクタを定義しなかった場合は、スーパークラスのコンストラクタが自動で呼ばれます。world.*/?&gt;オーバーライドオーバーライドとは、サブクラスでスーパークラスのメソッドやプロパティを上書きすることです。PHPでは、オーバーライドの特別な構文はなく、スーパークラスと同じ名前のプロパティやメソッドをサブクラスで定義するとオーバーライドされます。メソッドをオーバーライドする場合、基本的にスーパークラスと引数が同じでなければいけませんが、デフォルト値を持つ引数を追加することはできます。'オーバーライドしました。FooChild.オーバーライドしました。*/?&gt;finalキーワードサブクラスでオーバーライドさせたくないメソッドは、finalキーワードを付けて定義することでオーバーライドを禁止することができます。継承させたくないクラスは、finalキーワードを付けて定義することで継承できなくなります。プロパティをfinalで宣言することはできません。'オーバーライドしました。FooChild.?&gt;遅延静的束縛PHP5.3からは、遅延静的束縛が利用できます。遅延静的束縛により、呼び出し元のクラスを参照できるため、サブクラスで定義したstaticメソッド、staticプロパティ、クラス定数にスーパークラスからアクセスすることができます。下記の例では、Fooクラスで定義したメソッド内で、staticキーワードとスコープ定義演算子"::"でアクセスすることにより、呼び出し元のFooChildクラスのstaticメソッドにアクセスすることができています。