15分钟学Python 第22天 :继承与多态
Day 22:继承与多态
一、继承
1. 什么是继承?
继承是一种从已有类(父类或基类)创建新类(子类或派生类)的机制。子类可以获得父类的所有属性和方法,并且还可以增加新的属性和方法,或者重写父类的方法。
2. 继承的类型
- 单继承:一个子类只有一个父类。
- 多重继承:一个子类可以有多个父类。
- 层次继承:多个子类继承同一个父类。
3. 继承的语法
class Parent:
def __init__(self, name):
self.name = name
def greet(self):
return f"Hello, my name is {self.name}."
class Child(Parent):
def greet(self):
return f"Hi, I'm {self.name}!"
二、示例代码
# 父类
class Animal:
def __init__(self, name):
self.name = name
def 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. 方法重写
子类可以重写父类的方法,以实现特定的功能。
五、实例:动物类
构建一个动物管理系统,展示继承的强大之处。
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def 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. 多态的例子
通过上面的动物类示例,我们可以使用相同的方法访问所有动物,不论它们的具体类型。
for animal in animals:
print(animal.make_sound())
这段代码将会输出每个动物的声音,尽管我们不知道每个动物对象的具体类型。
八、如何实现多态
- 定义相同名称的方法:确保不同类中有同名的方法。
- 使用基类的引用:通过基类的引用操作子类对象。
九、实例:多态实现
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教程
通过上述内容,希望您对继承和多态有了更深入的理解。请随时向我提问,或告知我您的下一个学习主题!
怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!