面向对象的三大特性 - 多态
概念性
- python中处处是多态
- python是一门自带多态的语言
- 一个类表现出来的多种状态
支付Payment是一个类,多种状态: 使用阿里支付Alipay,使用微信支付Wechatpay
java中:
支付表现出来的多种状态 :
- 第一种状态 支付宝支付
- 第二种状态 微信支付
class Payment(object):pass class Alipay(Payment): def pay(self,money): pass class Wechatpay(Payment): def pay(self,money): pass def pay(Payment person_obj,float money): person_obj.pay(money) alex = Alipay() pay(alex,24.5) yuan = Wechatpay() print(yuan,23.5)
动物吃表现出来的多种状态:
- 猫吃
- 狗吃
class Animal(object):pass class Cat(Animal): def eat(self):pass class Dog(Animal): def eat(self):pass def eat(Animal obj): obj.eat() 小花 = Cat() # 小花就是猫类的对象 类==类型==数据类型,小花的类型就是Cat 小黑 = Dog() eat(小花) eat(小黑)
python中
class Animal(object):pass class Cat(Animal): def eat(self):pass class Dog(Animal): def eat(self):pass def eat(Animal obj): obj.eat() 小花 = Cat() # 小花就是猫类的对象 类==类型==数据类型,小花的类型就是Cat 小黑 = Dog() eat(小花) eat(小黑)
总结:
在python中体现的多态:
- 几个类拥有同名的方法,可以写一个函数,来统一进行调用 - 归一化设计
java要要求传递数据的数据类型? (通过继承来实现的)
- 是为了代码不出错,只要你能够顺利的调用这个函数,那么内部的执行就大大降低出错的概率
python却不要求?
- 更多的不是硬性的规定,但是可能会因为传递的参数不符合规则而使得代码报错,但是大大降低了代码繁琐程度