面向对象——多态

什么是多态

同一事物的多种形态

为何要用多态

多态性:指的是可以不用考虑对象具体类型的前提下直接使用对象的方法

如何使用多态

多态一般由继承来实现,但是不一定有继承关系来实现。

class Animal:
    def speak(self):
        pass
    
class People(Animal):
    def speak(self):
        print('say hi')

class Dog(Animal):
    def speak(self):
        print('wangwang')

class Pig(Animal):
    def speak(self):
        print('henhen')

 实现效果

person1 =People()
dog1= Dog()
pig1=Pig()
person1.speak()
dog1.speak()
pig1.speak()
#say hi
#wangwang
#henhen

像是Python的len()对于多个数据类型(类)有效就是多态的表现

def speak(animal):
    animal.speak()

speak(person1)
speak(dog1)
speak(pig1)

由继承父类模板

import abc

class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def speak(self):
        pass

# Animal() # 父类不能实例化,因为父类本身就是用来制定标准的
class People(Animal):
    def speak(self):
        print('say hello')
    # def jiao(self):
    #     print('say hello')

class Dog(Animal):
    def speak(self):
        print('汪汪汪')

class Pig(Animal):
    def speak(self):
        print('哼哼哼')

 

posted @ 2018-10-24 16:41  msjaxuexi  阅读(131)  评论(0编辑  收藏  举报