面向对象三大特性

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

多态案例演练
需求:

  • 在Dog类中封装方法game,普通狗只是简单的玩耍。
  • 定义XiaoTianQuan 类继承自Dog,并且重写game 方法,哮天犬在天上玩。
  • 定义Person类,并且封装一个和狗玩的方法,在方法内部,直接让狗对象调用 game方法
    图片说明
class Dog(object):
    def __init__(self,name):
        self.name = name
    def game(self):
        print("%s简单的玩耍" % self.name)


class XiaoTianQuan(Dog):
    # def __init__(self,name): 已经继承了,不需要再写一遍啊!!
    #     self.name = name
    def game(self):
        print("%s在天上玩耍" % self.name)


class Person(object):
    def __init__(self,name):
        self.name = name
    def game_with_dog(self,dog):
        dog.game()


wc = Dog("旺财")
xtq = XiaoTianQuan("哮天犬")
xm  = Person("小明")
xm.game_with_dog(xtq)
xm.game_with_dog(wc)