前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python面向对象编程-三大特性-继承-覆盖和重写

Python面向对象编程-三大特性-继承-覆盖和重写

原创
作者头像
玖叁叁
发布2023-04-19 07:28:52
3410
发布2023-04-19 07:28:52
举报
文章被收录于专栏:玖叁叁

覆盖和重写

子类可以覆盖(override)或重写(overwrite)父类的方法或属性。覆盖是指在子类中定义与父类相同名称的方法或属性,这样子类的实例调用该方法或属性时就会使用子类的定义。重写是指在子类中定义与父类相同名称的方法,但是使用了不同的实现逻辑,从而实现对父类方法的功能扩展。下面是一个简单的例子,演示了如何覆盖和重写父类的方法:

代码语言:javascript
复制
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 类和两个子类 CatLion。在 Cat 类中,我们覆盖了父类的 speak() 方法,而在 Lion 类中,我们重写了父类的 speak() 方法,并添加了一个新的方法 hunt()。在创建 CatLion 对象后,我们分别调用它们的方法和属性,看看输出结果。可以看到,Cat 对象调用的是子类的方法,而父类的属性被正确地继承了下来;Lion 对象调用的是子类的方法和属性,还调用了新增的方法 hunt()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 覆盖和重写
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档