python(类多态)

一、多态
  •  (以封装和继承为前提)不同的子类调用相同的方法,产生不同的结果
class Duck(object):                                  # 鸭子类
    def fly(self):
        print("鸭子沿着地面飞起来了")

class Swan(object):                                  # 天鹅类
    def fly(self):
        print("天鹅在空中翱翔")

class Plane(object):                                 # 飞机类
    def fly(self):
        print("飞机隆隆地起飞了")

def fly(obj):                                        # 实现飞的功能函数
    obj.fly()

duck = Duck()
fly(duck)

swan = Swan()
fly(swan)

plane = Plane()
fly(plane)

===运行结果:===================================================================================
鸭子沿着地面飞起来了
天鹅在空中翱翔
飞机隆隆地起飞了
class Dog():
    def __init__(self,name):
        self.name = name
    def game(self):
        print('%s 蹦蹦跳跳的玩耍...' %self.name)

class Xiaotianquan(Dog):
# 父类方法不能满足子类的需求的时候,重写game方法
    def game(self):
        print('%s 飞到天上玩...' %self.name)

class Person(object):
    def __init__(self,name):
        self.name = name
    def game_with_dog(self,dog):
        print('%s 和 %s 快乐的玩耍' %(self.name,dog.name))

#  1).创建一个狗对象
wangcai = Dog('旺财')
# wangcai = Xiaotianquan('飞天神狗')

#  2).创建一个小明对象(小明是一个人)
xiaoming = Person('小明')

#  3).让小明和狗玩
xiaoming.game_with_dog(wangcai)

二、Python中多态的特点

  1、只关心对象的实例方法是否同名,不关心对象所属的类型;
  2、对象所属的类之间,继承关系可有可无;
  3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;
  4、多态是调用方法的技巧,不会影响到类的内部设计。

三、拓展

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

 

posted @ 2019-11-01 20:03  Evan0813  阅读(440)  评论(0)    收藏  举报