phpのインターフェースとは
インターフェースとは、クラスがメソッド持っていることを定義するオブジェクト指向の仕組み。
インターフェース ≒ 抽象クラスである
抽象クラスと具象クラス
具象クラス
具象という単語が意味する通り処理を記述したメソッドの集まり。
・メソッドの中身が記述されている
・インスタンス化して使用できるクラス
抽象クラス
インターフェースと通常のクラスの中間のようなクラスで、処理の記述がないメソッドを1つ以上持つクラスのこと。
抽象クラスだけでは意味を持たず、サブクラスに継承されることで初めて機能する。
・メソッドの中身が記述されていない
・直接インスタンス化できない
・多重継承できない
・インスタンス化するには、抽象クラスを継承した具象クラスですべての抽象クラスをオーバーライドする必要がある
・サブクラスでコンストラクタを記述しなければならない
インターフェースのメリット
最大のメリットは、継承関係に縛られることなく、複数のクラスに共通の仕様と資格(似たような処理を一つのグループにまとめる)を与えることができる点。
→インターフェースを実装したクラスには定義してある抽象メソッドに対して実装されたメソッドが必ず存在する
→どんなクラスなのか、ソースを追う必要がなくなる。
→クラスではなく、インターフェースを依存させることで、インターフェースを継承したクラスならどれでも依存させることができる。(呼び出す際に使いたいクラスを呼び出す必要あり)
→クラス通しが疎結合になる
インターフェースの定義
・定義可能なのは抽象メソッド(処理の技術がない)だけ
・アクセス修飾子には「public」しか指定できない
・直接インスタンスの生成は不可能