第10章 オブジェクト指向構文 / 第3回 模擬試験

PHPのインターフェイスに関する次の記述のうち、誤っているものはどれか。

インターフェイスは`interface`キーワードで定義する。
クラスは`implements`キーワードでインターフェイスを実装する。
インターフェイスで定義したメソッドは、実装クラスで必ず実装しなければならない。
インターフェイスは、通常のプロパティ(メンバー変数)の実体を持つことができる。 正解
解説
インターフェイスは、実体を持つ通常のプロパティ(メンバー変数)を定義することができません。インターフェイスで定義できるのはメソッドのシグネチャ(実装を持たない)と、値を持つ定数(`const`)のみです。「プロパティの実体を持てる」という記述は誤りです。 他の選択肢が正しい理由は次の通りです。 ・インターフェイスは`interface インターフェイス名 { ... }`という構文で定義します。 ・クラスは`class クラス名 implements インターフェイス名 { ... }`のように`implements`キーワードでインターフェイスを実装します。 ・インターフェイスで宣言されたメソッドは、それを実装するクラス側で必ず実装しなければなりません。実装し忘れるとエラーになります。 例: ``` interface Shape { const UNIT = 'cm'; // 定数はOK public function area(): float; // メソッドのシグネチャのみ // public $color; // NG: 実体を持つプロパティは定義できない } ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.4.2節 インターフェイス p.516〜518)

あわせて読みたい解説記事