zoukankan      html  css  js  c++  java
  • python中的多态

    面向对象有封装,继承,多态三大特性,我们在这里主要介绍python中的多态.

    多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。

    上面所说的多态必须是在有继承的前提下,然而python中的多态却也可以继承就实现多态.

    先来看一个有继承版的多态,传入函数fun中的对象不一样便会产生不同执行效果

    class Animal(object):
        def eat(self):
            pass
    
    
    class Dog(object):
        def eat(self):
            print('eat fish')
    
    
    class Cat(object):
        def eat(self):
            print('eat bone')
    
    
    def fun(obj):
        obj.eat()
    
    
    def main():
        fun(Dog())
        fun(Cat())
    
    
    if __name__ == '__main__':
        main()

        但如果我们把Dog和Cat的父类Animal去除掉之后会发现,程序依旧是可以执行的,也就是python中的多态并非是严格意义上的多态,只要对象中存在eat()方法便可以将该对象传入fun中执行.



  • 相关阅读:
    今天学习的数组不是很懂
    今天的复习内容
    这是今天的作业
    总结,错误反思
    php 文件读取
    call_user_func函数
    plsql中调试函数 转
    oracle数据库中函数的递归调用
    关闭PdfReader右侧工具栏的方法
    Dev TreeList基本用法
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235491.html
Copyright © 2011-2022 走看看