继承简介
在面向对象编程中,继承是一种重要的概念。继承是指一个类可以从另一个类中继承属性和方法。被继承的类称为父类(或超类),继承的类称为子类。子类可以使用父类中的属性和方法,同时可以根据需要重写或扩展这些属性和方法。
Python 中使用 class
关键字定义类,可以明确指定该类的父类。在定义子类时,使用括号将父类括起来,如下所示:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
在上面的示例中,Person
是父类,Student
是子类。子类 Student
继承了父类 Person
中的所有属性和方法。在子类中调用父类的方法时,可以使用内置函数 super()
。
多重继承
Python 中支持多重继承,即一个子类可以从多个父类中继承属性和方法。
多重继承的语法如下所示:
class Student(Person, Worker):
def __init__(self, name, age, grade, company):
Person.__init__(self, name, age)
Worker.__init__(self, company)
self.grade = grade
在上面的示例中,子类 Student
继承了父类 Person
和 Worker
中的所有属性和方法。
需要注意的是,super()
函数默认只调用第一个父类中的同名方法。如果需要调用多个父类中的同名方法,可以使用 super()
函数的第二个参数来指定调用顺序,如下所示:
class A:
def work(self):
print("A")
super().work()
class B:
def work(self):
print("B")
class C(A, B):
def work(self):
print("C")
super().work(B)
if __name__ == '__main__':
c = C()
c.work()
在上面的示例中,子类 C
继承了父类 A
和 B
中的方法 work()
,并重写了该方法。由于 C
继承了两个父类中的同名方法,所以在重写该方法时需要使用 super()
函数的第二个参数来指定调用哪个父类中的方法。
继承的作用
继承是面向对象编程中的重要概念之一,它的作用如下所示:
复用父类的代码
子类可以继承父类中的所有属性和方法。这样,子类就不需要重复编写与父类相同的代码,提高了代码复用性。
扩展父类的功能
子类可以重写父类的方法,也可以在子类中定义新的方法和属性,从而扩展了父类的功能。这样,代码的灵活性和可扩展性也得到了提高。
实现多态性
由于子类可以重写父类的方法,所以多个对象可以使用相同名称的方法,但是方法的实现可能不同。这种机制称为多态性,是面向对象编程中的重要概念之一。
总结
继承是面向对象编程中的重要概念,它可以复用父类的代码,扩展父类的功能,实现多态性等。Python 中使用 class
定义类,可以明确指定该类的父类。需要注意的是,super()
函数默认只调用第一个父类中的同名方法,如果需要调用多个父类中的同名方法,可以使用 super()
函数的第二个参数来指定调用顺序。