6-2 继承和多态(人员、学生)
时间: 2023-07-16 14:12:08 浏览: 117
在面向对象编程中,继承和多态是两个非常重要的概念。继承可以让一个类继承另一个类的属性和方法,从而减少代码的重复性,提高代码的可维护性和可扩展性。而多态则是指同一种类型的对象,在不同的情况下可以呈现出不同的行为。
以人员和学生为例,人员是一个基础类,学生是一个派生类。学生继承了人员的一些属性和方法,如姓名、年龄、性别等,同时还有自己的属性和方法,如学号、班级、成绩等。
在多态方面,可以定义一个函数,这个函数的参数是一个人员对象,但是实际传入的可以是一个学生对象。由于学生对象继承了人员对象,所以可以调用这个函数,并且可以根据不同的情况呈现不同的行为,比如输出学生的学号和成绩。
下面是一个示例代码:
```
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
class Student(Person):
def __init__(self, name, age, gender, student_id, grade):
super().__init__(name, age, gender)
self.student_id = student_id
self.grade = grade
def get_info(self):
print("Name:", self.name)
print("Age:", self.age)
print("Gender:", self.gender)
print("Student ID:", self.student_id)
print("Grade:", self.grade)
def print_person_info(person):
print("Name:", person.name)
print("Age:", person.age)
print("Gender:", person.gender)
person1 = Person("Jack", 25, "Male")
student1 = Student("Alice", 20, "Female", "20210001", 90)
print_person_info(person1)
print_person_info(student1)
student1.get_info()
```
输出结果为:
```
Name: Jack
Age: 25
Gender: Male
Name: Alice
Age: 20
Gender: Female
Name: Alice
Age: 20
Gender: Female
Student ID: 20210001
Grade: 90
```
可以看到,我们定义了一个函数`print_person_info`,这个函数的参数是一个人员对象`person`。我们首先创建了一个人员对象`person1`和一个学生对象`student1`,然后分别调用`print_person_info`函数打印它们的姓名、年龄和性别。由于学生对象继承了人员对象,所以可以传入学生对象作为参数,并且可以正确地打印出它的姓名、年龄和性别。
接着,我们调用了学生对象的方法`get_info`,这个方法输出了学生的姓名、年龄、性别、学号和成绩。这里就展现了多态的特性,同一个函数能够处理不同类型的对象,并且呈现出不同的行为。