Day 22:继承与多态
一、继承
1. 什么是继承?
继承是一种从已有类(父类或基类)创建新类(子类或派生类)的机制。子类可以获得父类的所有属性和方法,并且还可以增加新的属性和方法,或者重写父类的方法。
2. 继承的类型
- 单继承:一个子类只有一个父类。
- 多重继承:一个子类可以有多个父类。
- 层次继承:多个子类继承同一个父类。
3. 继承的语法
python">class Parent:def __init__(self, name):self.name = namedef greet(self):return f"Hello, my name is {self.name}."class Child(Parent):def greet(self):return f"Hi, I'm {self.name}!"
二、示例代码
python"># 父类
class Animal:def __init__(self, name):self.name = namedef speak(self):return "Generic animal sound."# 子类
class Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 创建对象
dog = Dog("Buddy")
cat = Cat("Mittens")# 方法调用
print(dog.speak()) # 输出: Woof!
print(cat.speak()) # 输出: Meow!
三、代码运行流程图
下面是上面代码的运行流程图:
+-----------------+
| Animal Class |
+-----------------+|v
+-----------------+
| Dog Class | <----+
+-----------------+ |
| speak() | |
+-----------------+ || |v |"Woof!" ||
+-----------------------+
| Cat Class |
+-----------------------+
| speak() |
+-----------------------+|v"Meow!"
四、如何使用继承
1. 共享代码
通过继承,可以在子类中重用父类的方法和属性,这样可以减少代码的重复。
2. 扩展功能
子类可以添加新的方法和属性,扩展父类的功能。
3. 方法重写
子类可以重写父类的方法,以实现特定的功能。
五、实例:动物类
构建一个动物管理系统,展示继承的强大之处。
python">class Animal:def __init__(self, name, age):self.name = nameself.age = agedef make_sound(self):raise NotImplementedError("Subclass must implement abstract method.")class Dog(Animal):def make_sound(self):return "Woof!"class Cat(Animal):def make_sound(self):return "Meow!"animals = [Dog("Buddy", 3), Cat("Whiskers", 2)]for animal in animals:print(f"{animal.name} says: {animal.make_sound()}")
六、提纲摘要
主题 | 描述 | 示例 |
---|---|---|
继承概念 | 从父类创建子类 | class Child(Parent): ... |
单继承 | 一个父类对应一个子类 | class B(A): ... |
多重继承 | 一个子类对应多个父类 | class C(A, B): ... |
方法重写 | 子类重新定义父类的方法 | def method(self): ... |
代码复用 | 子类可以使用父类的方法和属性 | super().__init__() |
七、多态
1. 什么是多态?
多态是指不同类的对象可以通过相同的接口进行访问。这意味着你可以用同样的方式调用不同类中的方法,而不需要了解具体的实现细节。
2. 多态的例子
通过上面的动物类示例,我们可以使用相同的方法访问所有动物,不论它们的具体类型。
python">for animal in animals:print(animal.make_sound())
这段代码将会输出每个动物的声音,尽管我们不知道每个动物对象的具体类型。
八、如何实现多态
- 定义相同名称的方法:确保不同类中有同名的方法。
- 使用基类的引用:通过基类的引用操作子类对象。
九、实例:多态实现
python">class Bird(Animal):def make_sound(self):return "Chirp!"animals = [Dog("Buddy", 3), Cat("Whiskers", 2), Bird("Tweety", 1)]for animal in animals:print(f"{animal.name} says: {animal.make_sound()}")
十、总结
1. 继承的优势
- 代码复用
- 可维护性高
- 逻辑清晰,层次分明
2. 多态的优点
- 灵活性
- 可扩展性
- 改善代码可读性
练习题
- 创建一个新的动物类(如兔子),并确保它能正确实现多态。
- 定义一个基类
Shape
,包含一个方法area()
,再定义几个派生类(如Circle
和Rectangle
),实现该方法。
项目作业
设计一个简单的图形绘制程序,使用继承和多态实现不同图形的绘制。要求设定一个基类 Shape
,并根据形状类型(如圆形、矩形、三角形等)实现该方法。
参考资料
- Python官方文档
- 《Python编程:从入门到实践》
- 在线Python教程
通过上述内容,希望您对继承和多态有了更深入的理解。请随时向我提问,或告知我您的下一个学习主题!
怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!