クラスの応用 / ch02 — メソッドのオーバーライド / 演習 01

📝 ドリル 01 — EmailNotifier で send() をオーバーライド

やること

Notifier クラスを定義してください。

  • メソッド send()"通知を送信しました" を 1 行出力する

Notifier を継承した EmailNotifier クラスを定義してください。

  • send() をオーバーライドして "メールで通知を送信しました" を 1 行出力する

EmailNotifier のインスタンスを作って send() を呼んでください。

期待される出力

メールで通知を送信しました

ヒント

  • 親と 同じ名前のメソッド を子に書けばオーバーライド
  • 子のインスタンスでは、自動的に子のメソッドが呼ばれる
  • 本物のメール送信は Symfony Mailer 等のライブラリを使うが、ここでは echo でチャネルの差し替えを再現する

採点

php scripts/grade.php topics/class-advanced/ch02-override/drill/01-override-method/

テストケース

期待される出力

メールで通知を送信しました

📄 starter.php(雛形)

このコードから書き始めてください。

<?php

// TODO: Notifier クラスを定義し、send() で「通知を送信しました」を出力する
// TODO: Notifier を継承した EmailNotifier クラスを定義し、send() をオーバーライドして「メールで通知を送信しました」を出力する
// TODO: EmailNotifier のインスタンスを作って send() を呼ぶ
✅ 解答例を見る(自分で解いてから)
<?php

class Notifier {
    public function send() {
        echo "通知を送信しました\n";
    }
}

class EmailNotifier extends Notifier {
    public function send() {
        echo "メールで通知を送信しました\n";
    }
}

$mail = new EmailNotifier();
$mail->send();