python_面向对象_多态和多态性

多态性

同一种调用方式,却是不同的执行效果.它依赖于继承,在子类中方便定义统一接口
优点:
(1)增加了程序的灵活性
  以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)
(2)增加了程序可扩展性
  通过继承animal类创建了一个新的类,子类可以复写or 继承父类方法

class Animal:
    def run(self):
        raise AttributeError('子类必须实现这个方法')
 
 
class People(Animal):
    def run(self):
        print('人正在走')
 
class Pig(Animal):
    def run(self):
        print('pig is walking')
 
 
class Dog(Animal):
    def run(self):
        print('dog is running')
        

def func(obj): 
    #obj这个参数没有类型限制,可以传入不同类型(例如Person类,Dog类)的值
    obj.run() #调用的逻辑都一样,执行的结果却不一样
 
func(peo1)
func(pig1)

多态

同一种事物的多种形态,动物分为人类,猪类(在定义角度)

class People(Animal):
    def run(self):
        print('人正在走')
 
class Pig(Animal):
    def run(self):
        print('pig is walking')
 
 
class Dog(Animal):
    def run(self):
        print('dog is running')

你可能感兴趣的:(Python)