第10章 オブジェクト指向構文 / 第2回 模擬試験
PHPの継承に関する次の記述のうち、誤っているものはどれか。
子クラスは`extends`キーワードで親クラスを継承する。
PHPのクラスは複数のクラスを同時に継承できる(多重継承)。
正解
子クラスから親クラスのメソッドを呼び出すには`parent::`を使う。
`final`が付与されたメソッドは、子クラスでオーバーライドできない。
解説
PHPのクラスは単一継承のみをサポートしており、`extends`で指定できる親クラスは1つだけです。複数の振る舞いをまとめて再利用したい場合は、インターフェースの複数実装(`implements`)やトレイト(`use`)を組み合わせます。
他の選択肢が正しい理由は次の通りです。
・子クラスは`class Child extends Parent {}`のように`extends`キーワードで親クラスを継承します。
・子クラスから、オーバーライドした親クラスのメソッドを呼び出すには`parent::メソッド名()`を使います。
・`final`が付与されたメソッドは、子クラスで同名メソッドを定義して上書き(オーバーライド)することができません。
例:
```
trait Greetable {
public function greet(): string { return 'Hello'; }
}
interface Loggable {}
interface Cacheable {}
class Service implements Loggable, Cacheable {
use Greetable; // トレイトで複数の振る舞いを取り込む
}
```
(参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.3節 継承 p.496〜510)