第10章 オブジェクト指向構文 / 第2回 模擬試験
次のコードの実行結果として正しいものはどれか。 ```php class Animal { public function speak() { return "..."; } } class Dog extends Animal { public function speak() { return "Bow!"; } } $animals = [new Animal(), new Dog()]; foreach ($animals as $a) { print $a->speak(); } ```
......
...Bow!
正解
Bow!Bow!
Bow!...
解説
ポリモーフィズムにより、各オブジェクトはそれぞれのクラスで定義された`speak()`メソッドを呼び出します。`Animal`は`...`、`Dog`は`Bow!`を返すため`...Bow!`となります。(参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.3.2節 メソッドのオーバーライド p.500〜501)