インターフェイスについて学習したので、そのまとめ。
「その1」ではインターフェイスとは何かについてまとめたいと思います。
インターフェイスとは
クラスに定義(実装)しないといけないメソッドを定義(抽象)したもの。
インターフェイスが実装されたクラスは、そのインターフェイスに書いてある(定義してある)メソッドを絶対全部定義(実装)しないといけないということです。
メソッドの実装と抽象については別記事で書きたいと思います。(いつか)
とりあえずインターフェイスの実装を実験してみたらわかりやすいので、例を見ましょう。
実装例
- まず、Madokaクラスを作って、まどかに「ハイパーまどかビーム」を打たせます。
madomagi.php
class Madoka
{
public function waza(){
return 'ハイパーまどかビーム';
}
public function atack($waza){
echo($waza);
}
}
$mahou_syoujo = new Madoka();
$waza = $mahou_syoujo->waza();
$mahou_syoujo->atack($waza);
結果
ハイパーまどかビーム
- 攻撃用インターフェイス Atack を作ります。
madomagi.php
// 攻撃用インターフェイス
interface Atack
{
// 技を決める メソッドを定義(抽象)
public function waza();
// 技名で攻撃する メソッドを定義(抽象)
public function atack($waza);
}
- 攻撃用インターフェイス Atack を Madoka に実装します。
madomagi.php
// 攻撃用インターフェイス
interface Atack
{
// 技を決める
public function waza();
// 技名で攻撃する
public function atack($waza);
}
// まどかクラス
class Madoka implements Atack
{
public function waza(){
return 'ハイパーまどかビーム';
}
public function atack($waza){
echo($waza);
}
}
- この時、まどかに攻撃メソッド atack を実装し忘れると...
madomagi.php
// 攻撃用インターフェイス
interface Atack
{
// 技を決める
public function waza();
// 技名で攻撃する
public function atack($waza);
}
// まどかクラス
class Madoka implements Atack
{
public function waza(){
return 'ハイパーまどかビーム';
}
}
Fatal error: Class Madoka contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Atack::atack) in /Users/shu/Desktop/new 2.php on line 14
攻撃できない奴はまどかじゃないって言われてめっちゃ怒られます。まどかの概念の崩壊です。
こんな感じで実装(implements)したインターフェイスに定義されたメソッドはクラス側で絶対全部実装しなければいけません。