在Python中,类的继承是一种面向对象编程的核心特性,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。通过继承,子类可以重用父类的代码,并且可以在此基础上添加或修改功能。
下面是一个简单的Python代码示例,演示了如何定义父类和子类,以及子类如何继承父类的属性和方法:
|
# 定义父类(基类) |
|
class Animal: |
|
def __init__(self, name): |
|
self.name = name |
|
|
|
def speak(self): |
|
print(f"{self.name} makes a sound") |
|
|
|
# 定义子类(派生类),继承自Animal类 |
|
class Dog(Animal): |
|
def __init__(self, name, breed): |
|
# 调用父类的初始化方法 |
|
super().__init__(name) |
|
self.breed = breed |
|
|
|
def bark(self): |
|
print(f"{self.name} barks!") |
|
|
|
# 重写父类的方法 |
|
def speak(self): |
|
print(f"{self.name} barks") |
|
|
|
# 创建Dog类的实例 |
|
my_dog = Dog("Buddy", "Labrador") |
|
|
|
# 调用继承自父类的方法 |
|
my_dog.speak() # 输出: Buddy barks |
|
|
|
# 调用子类特有的方法 |
|
my_dog.bark() # 输出: Buddy barks! |
|
|
|
# 访问继承的属性和子类特有的属性 |
|
print(my_dog.name) # 输出: Buddy |
|
print(my_dog.breed) # 输出: Labrador |
在这个例子中,Animal 类是一个父类,它有一个 speak 方法和一个 name 属性。Dog 类继承自 Animal 类,它有一个 bark 方法和一个 breed 属性。Dog 类通过 super().__init__(name) 调用父类的 __init__ 方法来初始化 name 属性。同时,Dog 类重写了父类的 speak 方法,所以当调用 my_dog.speak() 时,输出的是狗叫的声音。
注意几个关键点:
super() 函数:用于调用父类(或超类)的一个方法。在子类的 __init__ 方法中,我们使用 super().__init__(name) 来确保父类的 __init__ 方法被正确调用,从而初始化继承的属性。
方法重写:子类可以重写父类的方法,即定义与父类同名的方法。在这种情况下,当子类对象调用该方法时,将执行子类中的版本。在上面的例子中,Dog 类重写了 speak 方法。
属性访问:子类对象可以访问从父类继承的属性,以及子类自己定义的属性。
继承是面向对象编程中一个强大的工具,它允许我们创建更灵活和可维护的代码结构。通过继承,我们可以建立类之间的层次结构,并在不同的层次上添加或修改功能。