设计模式-基础概念学习总结(继承、多态、虚方法、方法重写)
概念使用例子的方式介绍(继承,多态,虚方法,方法重写),实现代码python
1. 继承(Inheritance)
概念:子类继承父类的属性和方法,可以直接复用父类的代码,避免重复。
class Animal:def __init__(self, name):self.name = namedef eat(self):print(f"{self.name}正在吃东西")class Dog(Animal): # Dog 继承自 Animalpassdog = Dog("旺财")
dog.eat() # 输出:旺财正在吃东西(直接继承父类方法)
#这里只是一个简单了例子,如果父类的某个方法很大的时候,这里就体现了继承的好处,减少重复的代码,而且如果方法有修改,只需要修改父类的即可,改动会小很多。
2. 方法重写(Method Overriding)
概念:子类覆盖父类的同名方法,实现自己的逻辑。
好处:
- 例如父类中有很多公共的方法,子类继承后,可能有部分功能是自己独有的,这时就需要重写这个方法,已到达独有的功能实现,例如父类动物,子类猫,鸟。父类中有公共的运动方法run,但是猫和鸟的运动方式不一样,所以这里进行重写,满足各自的要求。
- 强一致性:通过继承父类的一个方法,这时不能自己定义一个方法名,必须使用父类公共的,这避免了不同方法名的出现。
- 复用代码。
class Cat(Animal):def eat(self): # 重写父类的 eat 方法print(f"{self.name}优雅地吃鱼")cat = Cat("小白")
cat.eat() # 输出:小白优雅地吃鱼(调用子类重写后的方法)
3. 虚方法(Virtual Method)
概念:父类中定义方法但不实现具体逻辑,强制子类重写。Python 中没有显式虚方法,但可通过抛出异常模拟。
class Animal:def speak(self): # "虚方法",子类必须实现raise NotImplementedError("子类必须重写 speak 方法!")class Dog(Animal):def speak(self): # 必须重写父类虚方法return "汪汪!"dog = Dog("旺财")
print(dog.speak()) # 输出:汪汪!
4. 多态(Polymorphism)
概念:不同子类对象调用相同方法,产生不同结果。Python 是动态类型语言,天然支持多态。
# 定义一个父类 Animal
class Animal:def __init__(self, name):self.name = name# 定义一个虚方法 speakdef speak(self):return f"{self.name} makes a sound."# 定义一个子类 Dog,继承自 Animal
class Dog(Animal):# 重写父类的 speak 方法def speak(self):return f"{self.name} barks."# 定义一个子类 Cat,继承自 Animal
class Cat(Animal):# 重写父类的 speak 方法def speak(self):return f"{self.name} meows."# 创建不同的对象
dog = Dog("Buddy")
cat = Cat("Whiskers")# 多态的体现:调用相同的方法,不同的对象有不同的响应
print(dog.speak())
print(cat.speak())
关键概念总结
术语 | 说明 |
---|---|
继承 | 子类复用父类的代码,减少重复 |
方法重写 | 子类覆盖父类方法,实现自己的逻辑 |
虚方法 | 父类定义方法但不实现,强制子类重写(通过抛出异常实现) |
多态 | 同一方法在不同子类对象中表现不同行为,提高代码灵活性和可扩展性 |
Python 通过动态类型和鸭子类型(Duck Typing)天然支持多态,无需显式类型声明。