Python编程实战 - 面向对象与进阶语法 - 继承与多态

在学习完类与对象的基本概念之后,我们就能更深入地理解 Python 面向对象编程(OOP)的强大之处。而其中的"继承"与"多态",正是让代码更加简洁、灵活、可扩展的核心机制。


一、继承(Inheritance)是什么

继承可以理解为"子类继承父类的特性与行为",即子类可以使用父类的属性和方法,同时还能在此基础上扩展或重写。

例如,我们定义一个 Animal 类作为父类:

python 复制代码
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print("动物在发出声音")

再定义一个 Dog 类继承 Animal

python 复制代码
class Dog(Animal):
    def speak(self):
        print(f"{self.name}:汪汪!")

使用时:

python 复制代码
dog = Dog("旺财")
dog.speak()

输出结果:

复制代码
旺财:汪汪!

✅ 可以看到,Dog 类继承了 Animal 的属性 name,但重写了 speak() 方法,表现出不同的行为。


二、继承的优势

  1. 代码复用:不用重复编写相同逻辑。
  2. 结构清晰:通过层次关系组织代码,易于维护。
  3. 便于扩展:新增子类即可扩展新功能,而不必修改已有代码(符合"开闭原则")。

三、调用父类方法

有时候子类希望在保留父类功能的同时增加新的逻辑,可以用 super() 调用父类方法。

python 复制代码
class Cat(Animal):
    def speak(self):
        super().speak()  # 调用父类方法
        print(f"{self.name}:喵喵!")

执行:

python 复制代码
cat = Cat("花花")
cat.speak()

输出:

复制代码
动物在发出声音
花花:喵喵!

四、多态(Polymorphism)是什么

多态意味着"同样的方法调用,可以表现出不同的行为"。

例如,定义多个子类,每个类实现自己的 speak() 方法:

python 复制代码
animals = [Dog("小黑"), Cat("小花"), Animal("未知")]
for a in animals:
    a.speak()

输出:

复制代码
小黑:汪汪!
小花:喵喵!
动物在发出声音

即使我们调用的是同一个方法 speak(),但不同对象展示了不同的结果------这就是多态。


五、Python的动态多态特性

Python 是动态类型语言,不需要像 Java 那样显式声明接口,只要对象实现了所需的方法,就可以被同样地调用。这种特性被称为 "鸭子类型(Duck Typing)"

"如果它看起来像鸭子,叫起来像鸭子,那它就是鸭子。"

python 复制代码
class Duck:
    def speak(self):
        print("嘎嘎!")

class Person:
    def speak(self):
        print("你好,我能模仿鸭子!")

def make_it_speak(obj):
    obj.speak()

make_it_speak(Duck())
make_it_speak(Person())

输出:

复制代码
嘎嘎!
你好,我能模仿鸭子!

六、总结

概念 说明
继承 子类复用父类属性和方法
重写 子类覆盖父类方法以实现新功能
多态 不同对象对同一方法调用表现不同
super() 调用父类方法
鸭子类型 只要行为相同,不必强制类型继承

继承与多态让代码更具层次与灵活性,是构建大型 Python 程序的重要思想。


相关推荐
虎冯河2 分钟前
阿里云 + 宝塔面板环境Python 项目从 0 到 1 部署全流
python·阿里云·云计算
最贪吃的虎6 分钟前
Redis其实并不是线程安全的
java·开发语言·数据库·redis·后端·缓存·lua
鹿衔`7 分钟前
PySpark 大规模造数任务优化与实施总结文档
python·pyspark
深蓝海拓7 分钟前
PySide6从0开始学习的笔记(二十三)使用QRunnable在线程池中执行临时任务
笔记·python·qt·学习·pyqt
CCPC不拿奖不改名8 分钟前
网络与API:HTTP基础+面试习题
网络·python·网络协议·学习·http·面试·职场和发展
MistaCloud9 分钟前
Pytorch深入浅出(十五)之GPU加速与设备管理
人工智能·pytorch·python·深度学习
武子康11 分钟前
大数据-208 岭回归与Lasso回归:区别、应用与选择指南
大数据·后端·机器学习
Aurora-Borealis.12 分钟前
Day31 函数专题2
python
qq_124987075315 分钟前
基于springboot归家租房小程序的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·小程序·毕业设计·计算机毕业设计
蓝冰凌17 分钟前
python版本管理工具
python