面向对象的三大特性 - 多态

概念性

  • 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却不要求?

  • 更多的不是硬性的规定,但是可能会因为传递的参数不符合规则而使得代码报错,但是大大降低了代码繁琐程度

 

posted @ 2019-02-06 22:42  小萍瓶盖儿  阅读(113)  评论(0编辑  收藏  举报