Monicx的博客

bear hardships and stand hard work

(python)面向对象三大特性之多态

1、什么是多态:

    它是指同一种事物的多种形态,在程序中用继承可以表现出多态。

    多态性:可以在不考虑具体类的情况下,直接参考基类的标准来使用对象。

    但在python中推崇鸭子类型。它不但解藕合,且能建立标准。

2、为什么要用多态:

    用基类创建一套统一的规则,强制子类去遵行(用抽象类去实现)这样可以不用考虑具体类型的前提下而直接使用对象下的方法。

3、如何使用:

来看下面的一段代码。

class Animal:
    def run(self):
        pass

    def bark(self):
        pass
    
class Cat(Animal):
    def jiao(self):
        print('喵喵喵')

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

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

c=Cat()
d=Dog()
p=Pig()
#调用不同具体动物叫的时候就用不同实现方法。
c.jiao()
d.speak()
p.han()

如上代码在调用不同具体动物叫的时候就用不同的调用方法。这样子不态好,很乱,没有规范。我们就要用多态来给它弄个规,凡是动物叫,就都用bark()来调用。这样就很清楚明了。

import abc
class Animal(metaclass=abc.ABCMeta):
    @abc.abstractclassmethod
    def bark(self):
        pass
    @abc.abstractclassmethod
    def drink(self):
        pass
class Cat(Animal):
    def drink(self):
        print('cat is dering')
    def bark(self):
        print('cat is barking')

class Dog(Animal):
    def drink(self):
        print('dog is dering')
    def bark(self):
        print('dog is barking')
c=Cat()
d=Dog()

c.bark()
d.bark()


阅读更多
个人分类: 面向对象
上一篇(python)面向对象三大特性之(封装)
下一篇(python)classmethod与staticmetod
想对作者说点什么? 我来说一句

Java 面向对象三大特性多态

2017年05月20日 6KB 下载

没有更多推荐了,返回首页

关闭
关闭