クラスの応用 / ch01 — 継承 (extends) / 演習 01
📝 ドリル 01 — User を継承した AdminUser
やること
User クラスを定義してください。
- プロパティ
email(string) - メソッド
login()は"{email} がログインしました"を 1 行出力する
次に User を継承した AdminUser クラスを定義してください。
- メソッド
deleteAll()は"{email} が全データを削除しました"を 1 行出力する
最後に AdminUser のインスタンスを作って email に "admin@example.com" を入れ、login() と deleteAll() を順に呼んでください。
期待される出力
admin@example.com がログインしました
admin@example.com が全データを削除しました
補足: 実務ではパスワード照合・セッション発行・権限チェックが入りますが、ここでは「継承で機能を引き継ぐ」一点だけにフォーカスします。
ヒント
class AdminUser extends User { ... }$a = new AdminUser();$a->email = "admin@example.com";- 親の
login()はAdminUserに書かなくても呼べる
採点
php scripts/grade.php topics/class-advanced/ch01-inheritance/drill/01-extend/ テストケース
期待される出力
admin@example.com がログインしました
admin@example.com が全データを削除しました
📄 starter.php(雛形)
このコードから書き始めてください。
<?php
// TODO: User クラスを定義する
// - public string $email;
// - public function login() { echo "{$this->email} がログインしました\n"; }
// TODO: User を継承した AdminUser クラスを定義する
// - public function deleteAll() { echo "{$this->email} が全データを削除しました\n"; }
// TODO: AdminUser のインスタンスを作って email = "admin@example.com" にし、login() と deleteAll() を呼ぶ
✅ 解答例を見る(自分で解いてから)
<?php
class User {
public string $email;
public function login(): void {
echo "{$this->email} がログインしました\n";
}
}
class AdminUser extends User {
public function deleteAll(): void {
echo "{$this->email} が全データを削除しました\n";
}
}
$a = new AdminUser();
$a->email = "admin@example.com";
$a->login();
$a->deleteAll();