编写一个名为Teacher的类,该类公有继承自Person类,并且增加major属性用来表示教师的专业,增加sleep( )方法打印教师的睡觉时间;
时间: 2023-12-10 15:42:57 浏览: 64
以下是一个可能的实现:
```cpp
class Teacher : public Person {
public:
Teacher(string name, int age, string major) : Person(name, age), m_major(major) {}
string getMajor() const { return m_major; }
void sleep() const { cout << getName() << " usually sleeps from 11pm to 6am." << endl; }
private:
string m_major;
};
```
这里的 `Teacher` 类继承自 `Person` 类,具有 `name` 和 `age` 成员变量以及 `getName()`、`getAge()` 方法。另外,它增加了一个 `major` 成员变量表示教师的专业,并且定义了一个 `getMajor()` 方法用来获取它。此外,它还增加了一个 `sleep()` 方法,用来打印教师的睡觉时间。注意,这里的 `sleep()` 方法没有修改任何成员变量,因此它应该是一个 `const` 成员函数。
相关问题
编写一个名为Teacher的类,该类公有继承自Person类,并且增加major属性用来表示教师的专业,增加sleep( )方法打印教师的睡觉时间;
好的,以下是Teacher类的代码实现:
```c++
class Teacher : public Person {
public:
string major;
Teacher(string n, int a, char s, string m) : Person(n, a, s), major(m) {}
void sleep() {
cout << "Teacher " << name << " sleeps at 10 PM." << endl;
}
};
```
在上述代码中,Teacher类公有继承自Person类,因此可以继承Person类中的属性和方法。同时,Teacher类增加了一个专业属性major,并定义了一个sleep()方法,用于打印教师的睡觉时间。在构造函数中,我们使用了初始化列表来初始化Teacher类中的属性和继承自Person类的属性。
(1)编写一个名为person的类,该类包含name和age属性以及一个show( )方法用于打印姓名和年龄信息; (2)编写一个名为teacher的类,该类公有继承自person类,并且增加major属性用来表示教师的专业,增加sleep( )方法打印教师的睡觉时间; (3)编写一个主函数,在该函数中分别实例化一个person对象和teacher对象,用person对象调用show( )方法,用teacher对象调用show()方法和sleep( ),观察运行结果。
### 回答1:
1. 编写一个名为Person的类,该类包含name和age属性以及一个show()方法用于打印姓名和年龄信息;
2. 编写一个名为Teacher的类,该类继承自Person类,并增加major属性用来表示教师的专业,并增加sleep()方法打印教师的睡眠时间;
3. 编写一个主函数,在该函数中实例化一个Person对象和一个Teacher对象,使用Person对象调用show()方法,使用Teacher对象调用show()和sleep()方法,观察运行结果。
### 回答2:
1. person类的代码如下:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
print('姓名:{},年龄:{}'.format(self.name, self.age))
```
2. teacher类的代码如下:
```python
class Teacher(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def sleep(self):
print('今晚睡觉时间:11点')
def show(self):
super().show()
print('专业:{}'.format(self.major))
```
3. 主函数的代码如下:
```python
def main():
p = Person('张三', 28)
p.show()
t = Teacher('李四', 35, '数学')
t.show()
t.sleep()
```
运行结果为:
```
姓名:张三,年龄:28
姓名:李四,年龄:35
专业:数学
今晚睡觉时间:11点
```
### 回答3:
(1) 首先,我们定义一个名为person的类,它包含name和age属性以及一个show()方法用于打印姓名和年龄信息:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
print("Name:", self.name)
print("Age:", self.age)
```
此时,我们就可以实例化一个person对象,并调用其show()方法来打印相关信息了:
```python
p = Person("小明", 18)
p.show()
```
输出结果为:
```
Name: 小明
Age: 18
```
(2) 接下来,我们创建一个名为teacher的类,它公有继承自person类,并增加major属性用来表示教师的专业,增加sleep()方法用于打印教师的睡觉时间:
```python
class Teacher(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def show(self):
super().show()
print("Major:", self.major)
def sleep(self):
print("我是教师,睡觉时间不固定")
```
注意,子类中重写的show方法应该调用父类的show方法,然后再额外打印出专业信息。
现在,我们就可以实例化一个teacher对象,并分别调用其show()和sleep()方法了:
```python
t = Teacher("小红", 25, "数学")
t.show()
t.sleep()
```
输出结果为:
```
Name: 小红
Age: 25
Major: 数学
我是教师,睡觉时间不固定
```
(3) 最后,我们在主函数中分别实例化一个person对象和teacher对象,并用其调用相关方法:
```python
def main():
p = Person("小明", 18)
p.show()
t = Teacher("小红", 25, "数学")
t.show()
t.sleep()
if __name__ == '__main__':
main()
```
输出结果为:
```
Name: 小明
Age: 18
Name: 小红
Age: 25
Major: 数学
我是教师,睡觉时间不固定
```
可以看到,person对象只能调用show()方法,而teacher对象既可以调用show()方法还可以调用sleep()方法,符合类的继承特点。同时,子类中重写的show()方法让其能够打印出额外的专业信息。
阅读全文