子类可以覆盖(override)或重写(overwrite)父类的方法或属性。覆盖是指在子类中定义与父类相同名称的方法或属性,这样子类的实例调用该方法或属性时就会使用子类的定义。重写是指在子类中定义与父类相同名称的方法,但是使用了不同的实现逻辑,从而实现对父类方法的功能扩展。下面是一个简单的例子,演示了如何覆盖和重写父类的方法:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print("I am an animal.")
class Cat(Animal):
def __init__(self, name):
super().__init__(name)
def speak(self):
print("Meow!")
class Lion(Animal):
def __init__(self, name):
super().__init__(name)
def speak(self):
print("Roar!")
def hunt(self):
print("I am hunting.")
# 创建一个 Cat 对象
c = Cat("Tom")
# 调用子类的方法
c.speak()
# 调用父类的方法
print(c.name)
# 创建一个 Lion 对象
l = Lion("Simba")
# 调用子类的方法
l.speak()
# 调用子类的方法和属性
l.hunt()
print(l.name)
在上面的代码中,我们定义了一个 Animal
类和两个子类 Cat
和 Lion
。在 Cat
类中,我们覆盖了父类的 speak()
方法,而在 Lion
类中,我们重写了父类的 speak()
方法,并添加了一个新的方法 hunt()
。在创建 Cat
和 Lion
对象后,我们分别调用它们的方法和属性,看看输出结果。可以看到,Cat
对象调用的是子类的方法,而父类的属性被正确地继承了下来;Lion
对象调用的是子类的方法和属性,还调用了新增的方法 hunt()
。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。