クラスの応用 / 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();