PHP – インターフェイス

概要

  • PHPではクラスの多重継承はできないが、複数のインターフェイスをインプリメントできる
  • インターフェイスでは実装すべき関数の宣言のみ行い、実装はこれをインプリメントした関数で行う
  • これにより、インターフェイスを実装するクラスが持つべきメソッドが明示・保証される

基本形

インターフェイスの宣言・定義

インターフェイスの実装

実装例

RPGのキャラクターをイメージしたキャラクターを実装していく。

親クラス

全てのキャラクターはCharacterClassクラスを継承し、

  • 名前を持つ
  • 武器で攻撃するattack()メソッドを持つ

Swordfighterクラス

SwordfighterクラスとWizardクラスはCharacterClassを継承し、武器による攻撃ができる。

Spellcasterインターフェイス

Spellcasterインターフェイスは呪文を使える種族を表し、呪文を唱えるspell()メソッドを持つ。spell()メソッドの実装は、インプリメントするクラスで定義する必要がある。

Wizardクラス

WizardクラスはCharacterClassクラスを継承するとともに、Spellcasterインターフェイスをインプリメントする。Wizardは武器による攻撃ができるほか、spell()メソッドで攻撃魔法を実装している。

Priestクラス

PriestクラスはCharacterClassクラスを継承するとともに、Spellcasterインターフェイスをインプリメントする。Priestは武器による攻撃ができるほか、spell()メソッドで味方の治療を実装している。

ポリモーフィズムによる実行

SwordfighterWizardPriestのインスタンスを生成し、$party_members配列に保存する。

  • 全てのメンバーに武器で攻撃させる
  • その後、Spellcasterのメンバーに呪文使用させる

インターフェイス実装の確認

あるクラスが指定したインターフェイスをインプリメントしているかどうかは、クラスのチェックと同じ型演算子instanceofで確認できる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です