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

PHPの継承とポリモーフィズムに関する次の記述のうち、正しいものはどれか。

継承は、既存のクラスのプロパティやメソッドを再利用する仕組みである。 正解
`final`キーワードをメソッドに付けても、子クラスは自由にそのメソッドをオーバーライド(上書き)できる。
抽象クラスは、インスタンス化できる。
インターフェイスは、プロパティを定義できる。
解説
継承(`extends`)とは、既存の親クラスが持つプロパティやメソッドを、子クラスがそのまま引き継いで再利用できる仕組みです。 他の選択肢が誤りである理由は次の通りです。 ・`final`キーワードをメソッドに付けると、そのメソッドは子クラスで再定義(オーバーライド)できなくなります。「自由にオーバーライドできる」というのは逆の説明です(`final`はオーバーライドを禁止するためのキーワードです)。 ・抽象クラス(`abstract class`)は、`new`で直接インスタンス化することができません。具象クラス(抽象クラスを継承し、抽象メソッドをすべて実装したクラス)としてしか実体化できません。 ・インターフェイスは、メソッドのシグネチャ(と値を持つ定数)のみを定義でき、実体を持つ通常のプロパティは定義できません。 例: ``` class Base { final public function locked(): string { return 'これは変更できない'; } } class Child extends Base { // public function locked(): string { return '上書き'; } // Fatal error: Cannot override final method } ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.3節 継承 / 10.4節 ポリモーフィズム p.496〜522)

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