欢迎光临
我们一直在努力

Python面向对象进阶:继承超详细讲解(单继承、多继承、方法重写、super用法)零基础吃透

📌 专栏:Python面向对象全套教程

🔥 阅读收获:彻底掌握类的继承机制、单继承、多继承、方法重写、super()调用父类方法、继承与组合区别,搞定面试所有继承考题。

💡 学习定位:封装(基础)→ 继承(复用)→ 组合(解耦)→ 多态(灵活)

一、什么是继承?

1.1 继承概念

继承是面向对象三大核心特性之一,作用是:让子类自动拥有父类的所有属性和方法,实现代码复用。

生活理解:孩子继承父母的特征与能力,不用重新学习、重新定义。

1.2 继承核心关系(必考)

父类(基类 / 超类):公共模板,存放通用属性和方法

子类(派生类):继承父类,拥有父类功能,还可以扩展自己功能

继承关系:子类 is a 父类

1.3 为什么要用继承?

  • 减少重复代码,大量复用父类逻辑

  • 统一规范,所有子类拥有统一父类接口

  • 便于后期代码扩展、统一维护

  • 二、单继承(最常用)

    2.1 语法格式

    class 父类名:
    # 通用属性、方法

    class 子类名(父类名):
    # 扩展自己的属性、方法

    2.2 实战案例:父类人类,子类学生

    # 父类
    class Person:
    def __init__(self, name, age):
    self.name = name
    self.age = age

    def show_info(self):
    print(f"姓名:{self.name},年龄:{self.age}")

    # 子类:学生 继承 人类
    class Student(Person):
    # 子类可以直接使用父类所有内容
    pass

    # 测试
    stu = Student("小明", 18)
    stu.show_info()

    可以看到:子类没有写任何代码,却拥有父类全部功能,这就是继承的魅力。

    三、子类扩展自己的功能

    继承不只是照搬,子类可以在父类基础上新增属性和方法。

    class Person:
    def __init__(self, name, age):
    self.name = name
    self.age = age

    def show_info(self):
    print(f"姓名:{self.name},年龄:{self.age}")

    # 学生子类:继承 + 扩展
    class Student(Person):
    def __init__(self, name, age, stu_id):
    # 先调用父类构造
    super().__init__(name, age)
    # 扩展自己独有属性
    self.stu_id = stu_id

    # 扩展独有方法
    def study(self):
    print(f"{self.name}(学号{self.stu_id})正在上课学习")

    stu = Student("小红", 20, "2026001")
    stu.show_info()
    stu.study()

    核心逻辑:保留父类通用能力,新增子类专属能力。

    四、方法重写(override)

    重写:子类定义与父类同名方法,覆盖父类逻辑,实现个性化功能。

    重写是多态的基础。

    class Person:
    def work(self):
    print("人类进行工作")

    class Teacher(Person):
    # 重写父类方法
    def work(self):
    print("老师教书育人")

    class Doctor(Person):
    # 重写父类方法
    def work(self):
    print("医生救死扶伤")

    t = Teacher()
    d = Doctor()
    t.work()
    d.work()

    执行规则:优先调用子类自己的方法,没有才找父类。

    五、super() 函数详解(高频考点)

    super() 作用:主动调用父类的构造方法或普通方法。

    解决问题:子类重写构造后,不会自动继承父类构造,必须手动调用 super。

    正确标准写法

    class Animal:
    def __init__(self, name):
    self.name = name

    def eat(self):
    print(f"{self.name}需要吃东西")

    class Dog(Animal):
    def __init__(self, name, color):
    # 调用父类构造方法
    super().__init__(name)
    self.color = color

    def bark(self):
    print(f"{self.name}({self.color})汪汪叫")

    dog = Dog("旺财", "黑色")
    dog.eat()
    dog.bark()

    口诀:子类构造第一行,优先 super 父构造。

    六、多继承(一个子类继承多个父类)

    6.1 语法

    class 子类(父类1, 父类2, 父类3):
    pass

    6.2 实战案例

    class Singer:
    def sing(self):
    print("会唱歌")

    class Dancer:
    def dance(self):
    print("会跳舞")

    # 艺人同时继承歌手、舞者
    class Star(Singer, Dancer):
    pass

    s = Star()
    s.sing()
    s.dance()

    6.3 MRO 就近查找原则(面试)

    多继承如果出现同名方法,按照 从左到右 继承顺序查找,找到即停止。

    可通过 类名.__mro__ 查看查找顺序。

    七、继承 VS 组合(终极对比)

    配合你上一篇组合博客,形成完整知识体系:

    继承 is-a:学生是人类、狗是动物 → 强层级、强复用

    组合 has-a:电脑有CPU、人有身份证 → 组件装配、低耦合

    开发原则:层级关系用继承,组件关系用组合,优先组合。

    八、全文核心总结

  • 继承实现代码复用,子类拥有父类所有属性和方法;

  • 单继承:一个父类,结构简单、最常用;

  • 方法重写:子类覆盖父类方法,实现个性化逻辑;

  • super() 专门用来调用父类构造和方法;

  • 多继承可同时继承多个父类,遵循MRO从左至右查找;

  • is-a用继承,has-a用组合。

  • 赞(0)
    未经允许不得转载:171主机测评 » Python面向对象进阶:继承超详细讲解(单继承、多继承、方法重写、super用法)零基础吃透
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址