在Python中,重写(Override)指的是子类重新定义父类中已有的方法。重写的目的是为了让子类能够提供自己特定的实现,以改变或扩展继承自父类的行为。重写时,子类的方法名、参数列表必须与父类中的方法相同,但是返回值的范围和抛出的异常范围可以有所不同。需要注意的是,如果父类的方法被声明为`private`(在Python中是以单下划线开头),则子类不能对其进行重写。
重写与重载(Overloading)是不同的概念。重载通常发生在同一个类中,允许使用相同的方法名但参数类型、个数或顺序不同。而Python中没有像Java或C++那样的严格意义上的重载机制,但可以通过方法重写和不同的参数类型实现类似的功能。
下面是一个Python中重写的例子:
class Base:
def __init__(self, name):
self.name = name
def eat_dinner(self):
print(f'{self.name} is eating dinner.')
class Child(Base):
def eat_dinner(self):
print(f'{self.name} is eating pizza.')
child = Child('Alice')
child.eat_dinner() 输出:Alice is eating pizza.
在这个例子中,`Child`类重写了`Base`类的`eat_dinner`方法,以提供不同的行为