码迷,mamicode.com
首页 > 其他好文 > 详细

继承与多态

时间:2018-12-12 00:37:50      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:有一个   获得   super   直接   python   size   包括   静态   animal   

我们可以从某个现有的class继承定义一个class,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)如:class Dog(Animal): 而不是class Dog(object): 好处:1.子类能获得父类的全部功能,包括父类的方法 2.多态:子类的实例既是属于子类,也属于父类。

注意:子类会继承父类的方法,但当子类有同样的方法,如run(),子类会覆盖父类,运行时会调用子类的run()

多态好处:只要确认是某类型,就可以调用该类型的方法,如果子类实例有同名方法,则调用子类方法,否则调用父类方法,这样不必再为子类单独建立一个函数调用方法 如: def run_twice(animal): animal.run() 子类Dog不需要再建立一个函数调用Dog.run,而直接使用run_twice(Dog)就行,而且其实是使用子类方法Dog.run。在调用时也不需要管内部细节,直接调用,运行时会自动根据该对象的确切类型(是否子类,子类是否有同样方法)决定。 同时,继承和多态还可以一级一级继承下去

静态语言 vs 动态语言 对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法

对于动态语言Python来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了

简单来说就是,动态语言不一定需要传入Animal类型,而只需要该类型定义了run()的方法就可以调用run_twice()。静态语音如Java则不行,必须传入Animal类型的

继承与多态

标签:有一个   获得   super   直接   python   size   包括   静态   animal   

原文地址:https://www.cnblogs.com/lz1008/p/10105438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!