跳到主要内容

继承(Inheritance)与多态(Polymorphism)

🧩 继承和多态解决了什么问题?

在软件开发中,随着程序规模和复杂度的增长,代码的复用、扩展性和维护变得非常重要。

  • 继承解决了代码复用和层次组织问题。通过继承,子类可以复用父类已有的属性和方法,避免重复代码,同时自然地表现“是一个”的关系,比如“狗是一个动物”。
  • 多态解决了不同对象以统一接口表现不同行为的问题。程序可以通过基类接口调用不同子类的同名方法,灵活地处理多种对象,增强了程序的扩展性和灵活性。

这两个特性是面向对象编程的核心,使代码更简洁、易维护且功能强大。


1. 继承(Inheritance)

🧩 什么是继承?

继承是面向对象编程中的一个重要概念。一个类(子类)可以继承另一个类(父类)的属性和方法,从而复用代码并实现层次结构。

继承解决了什么问题?

  • 代码复用:子类自动拥有父类的功能,不用重新编写。
  • 逻辑组织:表示“是一个”的关系,如“狗是一个动物”。
  • 便于扩展和维护。

🛠 继承的基本语法

动物:
初始化(self, 名字):
self.名字 = 名字

叫声(self):
打印("动物发出声音")

(动物): # 继承动物类
叫声(self): # 重写方法
打印(f"{self.名字} 叫:汪汪汪")

1 =("旺财")
1.叫声() # 输出:旺财 叫:汪汪汪

📝 继承的特点

  • 子类自动拥有父类的所有公有属性和方法。
  • 可以重写(覆盖)父类的方法,实现不同表现。
  • 可以调用父类的方法,使用 父类名.方法名(self, ...)

👨‍👩‍👧 调用父类方法示例

动物:
__初始化__(self, 名字):
self.名字 = 名字

叫声(self):
打印("动物发出声音")

(动物):
叫声(self):
父类.叫声()
打印(f"{self.名字} 叫:喵喵喵")

1 =("咪咪")
1.叫声()

2. 多态(Polymorphism)

🧩 什么是多态?

多态指的是不同类的对象对同一消息(方法调用)作出不同响应的能力。

换句话说,就是同一个接口,调用不同子类时表现不同。

多态提高了程序的灵活性和扩展性。


🛠 多态示例

动物:
叫声(self):
打印("动物发出声音")

(动物):
叫声(self):
打印("汪汪汪")

(动物):
叫声(self):
打印("喵喵喵")

让动物叫(动物列表):
循环 动物动物列表 中:
动物.叫声()

动物们 = [(),()]
让动物叫(动物们) # 输出:汪汪汪\n喵喵喵

📝 多态的好处

  • 让程序在不修改调用代码的情况下,可以支持新的类。
  • 通过基类接口调用,代码更简洁、灵活。

总结

概念作用举例
继承子类复用父类代码,建立层次关系class 狗(动物): ...
多态不同子类对同一方法表现不同让动物叫([狗(), 猫()])

继承和多态是面向对象的核心特性,掌握它们能让你的代码更易扩展、复用和维护。


需要我帮你继续生成后续章节或者添加练习题吗?