Python - 面向对象编程 - 子类方法的重写
继承的详解
https://www.cnblogs.com/poloyy/p/15216652.html
方法的重写
- 在子类继承父类时,子类会拥有父类的所有属性和方法
- 但当父类的方法实现不满足子类需要时,子类可以对方法进行重写,也叫 override
重写父类方法的两种情况
- 覆盖父类的方法
- 对父类方法进行扩展
方法重写的类图
Chai 类继承了 Dog 类,重写了 wang 方法
覆盖父类的方法
- 在开发中,父类的方法和子类的方法功能不同,就可以使用覆盖的方式,在子类中重新编写父类的方法
- 相当于在子类中定义一个和父类同名的方法并且实现子类特有的功能
- 重写后,在运行时,只会调用子类中重写的方法,而不再会调用父类封装的方法
实际代码
class Animal: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") class Dog(Animal): def wang(self): print("汪汪叫...") class Chai(Dog): def shake(self): print("小柴柴摇尾巴...") def wang(self): print("柴犬小声的汪汪叫") chai = Chai() chai.wang() # 输出结果 柴犬小声的汪汪叫
子类实例方法调用的是子类的 wang 方法,而不是父类的 wang 方法
对父类方法进行扩展
在开发中,子类的方法实现需要包含父类的方法,就可以使用扩展方式
如何扩展
- 在子类中重写父类的方法
- 在子类方法需要调用父类方法的地方,通过 super().父类方法 类执行父类方法
- 代码其他的位置可以针对子类的需求,编写子类特有的代码
super() 详解:https://www.cnblogs.com/poloyy/p/15223443.html
实际代码
class Animal: def eat(self): print("吃东西...") def drink(self): print("喝水...") def run(self): print("跑步...") class Dog(Animal): def wang(self): print("汪汪叫...") class Chai(Dog): def shake(self): print("小柴柴摇尾巴...") def wang(self): # 1、针对子类特有的需求,编写子类独有的代码实现 print("柴犬小声的汪汪叫") # 2、调用父类方法 super().wang() # 3、子类的其他代码块 print("柴犬真可爱") chai = Chai() chai.wang() # 输出结果 柴犬小声的汪汪叫 汪汪叫... 柴犬真可爱
标签:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2020-09-03 Cypress系列(42)- visit() 命令详解
2020-09-03 详解 Session 和 Cookie