Python学习第17课 多态

多态

目标

● 多态
面向对象三大特性
1、封装
根据职责,将属性和方法封装到一个抽象的类中
● 定义类的准则
2、继承
实现代码的重用,相同的代码不需要重复的编写
● 设计类的技巧
● 子类针对自己特有的需求,编写特定的代码
3、多态
不同的子类对象调用相同的父类方法,产生不同的执行结果
● 多态可以增加代码的灵活度
● 以继承和重写父类方法为前提
● 是调用方法的技巧,不会影响到类的内部设计

多态案例演练

需求
1、在Dog类中封装方法game
● 普通狗只是简单的玩耍
2、定义XiaoTianDog继承Dog,并且重写game方法
● 哮天犬需要在天上玩耍
3、定义Person类,并且封装一个和狗玩的方法
● 在方法内部,直接让狗对象调用game方法

class Dog(object):

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

    def game(self):
        print("玩耍")


class XiaoTianDog(Dog):

     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))

        # 让狗玩耍
        dog.game()


# 创建一个狗对象
wangcai = Dog("旺财")
wangcai = XiaoTianDog("飞天旺财")
# 创建一个人对象
xiaoming = Person("小明")
# 人调用和狗玩方法
xiaoming.game_with_dog(wangcai)

案例小结
● Person类中只需要让狗对象调用game方法,而不关心具体是什么狗
game方法是在Dog类中定义的
● 在程序执行时,传入不同的狗对象实参,就会产生不同的执行效果

猜你喜欢

转载自blog.csdn.net/weixin_42057995/article/details/89365184