📅  最后修改于: 2023-12-03 14:57:02.984000             🧑  作者: Mango
本测验主要针对于PHP开发的网络技术问题。本题目是第2组中的第13个问题,主要考察对面向对象程序设计的掌握程度。
现有一个Person
类,属性有name
和age
,方法有sayHello()
。请在Person
类的基础上定义一个Student
类,属性有grade
和class
,方法有study()
和sayHello()
。要求Student
类继承Person
类,并在保留Person
类属性及方法的基础上,实现study()
方法和重写sayHello()
方法,使得调用时能够输出“我是{姓名},我在{班级}{年级}学习,今年{年龄}岁了”。
class Person {
protected $name;
protected $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function sayHello() {
echo "我的名字是{$this->name},我今年{$this->age}岁了。\n";
}
}
class Student extends Person {
protected $grade;
protected $class;
public function __construct($name, $age, $grade, $class) {
parent::__construct($name, $age);
$this->grade = $grade;
$this->class = $class;
}
public function study() {
echo "我在{$this->class}{$this->grade}学习。\n";
}
public function sayHello() {
echo "我是{$this->name},我在{$this->class}{$this->grade}学习,今年{$this->age}岁了。\n";
}
}
// 测试
$person = new Person('小明', 18);
$person->sayHello();
$student = new Student('小红', 16, '高一', '1班');
$student->sayHello();
$student->study();
本程序中定义了一个Person
类,有name
和age
两个属性,以及sayHello()
方法。Student
类继承了Person
类,并添加了grade
和class
两个属性,以及study()
方法和重写的sayHello()
方法。
在调用sayHello()
方法时,如果是Person
类,则输出“我的名字是{name},我今年{age}岁了。”,如果是Student
类,则输出“我是{name},我在{class}{grade}学习,今年{age}岁了。”, Student
类中新增的study()
方法输出“我在{class}{grade}学习。”。
在测试中创建了一个Person
类对象和一个Student
类对象,并执行了两个对象的方法,程序输出:
我的名字是小明,我今年18岁了。
我是小红,我在1班高一学习,今年16岁了。
我在1班高一学习。
通过本测验的实现,我们可以更好地理解面向对象程序设计中的继承和重写方法,并在实际开发中更好地使用这些特性。同时,也拓宽了我们的思路,为以后的开发工作打下了基础。