AI智能
改变未来

『无为则无心』Python面向对象 — 56、Python多态

[toc]

1、Python中的多态

(1)多态的定义

多态是一种使用对象的方式,子类重写父类方法,不同的子类对象调用相同的父类方法,可以产生不同的执行结果。

概括的说,多态指的是一类事物可以有多种形态呈现。

(2)多态的好处

  • 增加了程序额可扩展性,只要觉有相同的特征,就可以创建一个新的类,使用者无需更改原有类的代码,更容易编写出通用的代码,做出通用的编程。
  • 有了多态,增加了程序的调用灵活性,以不变应万变,不论对象千变万化,使用者都是同一种形式去调用。
  • 支持面向对象的“开闭”原则。对扩展开放(
    Open for extension

    ):允许子类重写方法进行扩展。

  • 对修改封闭(
    Closed for modification

    ):不重写,继承父类方法,直接使用。

(3)多态实现步骤

  1. Python中实现多态的两个前提条件:
      继承:多态一定是发生在子类和父类之间。
    • 重写:子类重写了父类的方法。
  2. 多态实现步骤
      定义父类,并提供公共方法。
    • 定义子类,并重写父类方法。
    • 传递子类对象给调用者,可以看到不同子类执行效果不同。

2、体验多态

# 1. 定义父类,提供公共方法class Dog(object):# 父类提供统一的方法,哪怕是空方法def work(self):pass# 2. 定义子类,继承Dog类# 子类重写父类方法:# 定义2个类表示不同的警犬class ArmyDog(Dog):def work(self):print(\'追击敌人...\')class DrugDog(Dog):def work(self):print(\'追查毒品...\')# 定义人类class Person(object):# 传入不同的对象,执行不同的代码,即调用不同的work函数def work_with_dog(self, dog):dog.work()# 3. 创建对象,# (有多少个事物,就有要创建多少个对象)ad = ArmyDog()dd = DrugDog()# 4.传入不同的对象,调用不同的功能,obj = Person()obj.work_with_dog(ad)obj.work_with_dog(dd)

总结:

Java中多态性的表现: 多态性,可以理解为一个事物的多种形态。同样Python中也支持多态,但是是有限的的支持多态性,主要是因为Python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时Python不支持重载,所以在Python中 多态的使用不如Java中那么明显。

参考:https://blog.csdn.net/qq_26442553/article/details/81776699

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『无为则无心』Python面向对象 — 56、Python多态