在Python中,面向对象编程的继承是通过在子类定义时指定父类来实现的。以下是继承的基本规则和用法:
单继承
子类通过在类定义时括号内指定父类名称来实现继承。
子类默认继承父类的所有属性和方法。
如果子类需要新增属性或方法,可以在子类定义中添加。
如果子类需要调用父类的构造方法,可以使用`super().__init__()`。
多重继承
子类可以通过在类定义时括号内指定多个父类名称来实现多重继承。
Python使用C3线性化算法确定方法解析顺序(MRO)。
可以使用`class.__mro__`查看类的继承关系。
方法重写
如果子类定义了与父类同名的方法,子类的方法会覆盖父类的方法。
可以使用`super().method_name()`在子类中调用父类的同名方法。
私有属性和方法
在属性名和方法名前面加两个下划线`__`来定义私有属性和方法。
私有属性和方法只能在类内部访问。
获取和修改私有属性
可以定义`get__`和`set__`方法来获取和修改私有属性值。
下面是一个简单的继承示例:
class Animal:
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age
def eat(self):
print(f"Animal {self.name} is eating.")
class Person(Animal):
def __init__(self, name, sex, age, occupation):
super().__init__(name, sex, age)
self.occupation = occupation
def work(self):
print(f"{self.name} is working as a {self.occupation}.")
创建子类对象
person = Person("Alice", "female", 30, "Engineer")
调用继承自父类的方法
person.eat() 输出:Animal Alice is eating.
调用子类自己的方法
person.work() 输出:Alice is working as a Engineer.
在这个例子中,`Person`类继承了`Animal`类,因此`Person`对象可以访问`Animal`类的属性和方法。同时,`Person`类也有自己的属性和方法。
继承是面向对象编程中的一个核心概念,它允许代码重用,并通过组合和扩展现有类来创建新类