设计模式-基础概念学习总结(继承、多态、虚方法、方法重写)

概念使用例子的方式介绍(继承,多态,虚方法,方法重写),实现代码python

1. 继承(Inheritance)

概念:子类继承父类的属性和方法,可以直接复用父类的代码,避免重复。

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

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

class Dog(Animal):  # Dog 继承自 Animal
    pass

dog = Dog("旺财")
dog.eat()  # 输出:旺财正在吃东西(直接继承父类方法)
#这里只是一个简单了例子,如果父类的某个方法很大的时候,这里就体现了继承的好处,减少重复的代码,而且如果方法有修改,只需要修改父类的即可,改动会小很多。

2. 方法重写(Method Overriding)

概念:子类覆盖父类的同名方法,实现自己的逻辑。
好处

  1. 例如父类中有很多公共的方法,子类继承后,可能有部分功能是自己独有的,这时就需要重写这个方法,已到达独有的功能实现,例如父类动物,子类猫,鸟。父类中有公共的运动方法run,但是猫和鸟的运动方式不一样,所以这里进行重写,满足各自的要求。
  2. 强一致性:通过继承父类的一个方法,这时不能自己定义一个方法名,必须使用父类公共的,这避免了不同方法名的出现。
  3. 复用代码。
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

    # 定义一个虚方法 speak
    def 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)天然支持多态,无需显式类型声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值