继承和多态
2015-10-09 19:06
260 查看
继承
1、
子类获得父类的全部功能
2、
当子类和父类都存在相同的方法时,子类的方法覆盖父类的方法,在代码运行的时候,总是会调用子类的方法
注:这样我们就获得了继承的另一个好处:多态
3、
继承可以一级一级地继承下来。而任何类,最终可以追溯到根类objict
多态
在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做父类。反之不成立
eg:
前提,Dog是Animal的子类
用isinstance()判断变量类型
多态:
对于一个变量,我们只需要知道他是Animal类型有run()方法,儿具体调用的run()方法时作用在他的哪个子类对象上,有运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,而我们新增一种Animal的子类时,只要确保run()方法编写正确,不用管原来的代码是如何调用的。这就是著名的“开闭”原则:
对扩展开放:允许新增Animal子类
对修改封闭:不需要修改依赖Animal类型的函数
1、
子类获得父类的全部功能
2、
当子类和父类都存在相同的方法时,子类的方法覆盖父类的方法,在代码运行的时候,总是会调用子类的方法
注:这样我们就获得了继承的另一个好处:多态
3、
继承可以一级一级地继承下来。而任何类,最终可以追溯到根类objict
多态
在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做父类。反之不成立
eg:
前提,Dog是Animal的子类
b = Animal() # b是Animal类型 c = Dog() # c是Dog类型
用isinstance()判断变量类型
>>> isinstance(b, Animal) True >>> isinstance(c, Dog) True >>> isinstance(c, Animal) True 反之 >>> b = Animal() >>> isinstance(b, Dog) False
多态:
对于一个变量,我们只需要知道他是Animal类型有run()方法,儿具体调用的run()方法时作用在他的哪个子类对象上,有运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,而我们新增一种Animal的子类时,只要确保run()方法编写正确,不用管原来的代码是如何调用的。这就是著名的“开闭”原则:
对扩展开放:允许新增Animal子类
对修改封闭:不需要修改依赖Animal类型的函数
相关文章推荐
- MIRACL大数运算库使用手册(2014-4-15 10:52)
- JS页面间传值
- 单例模式的七种写法【java】
- android入门
- ThreadSafeClientConnManager用来支持多线程的使用http client
- 简单学C——第三天
- Alerta在CentOS6.6安装全过程
- ios深度解析之coreData
- Android控件之WebView(网页调转回APP)
- POJ 1631 && HDU 1950 Bridging signals(LIS)
- Android Fragment 真正的完全解析(下)
- vs2012上跑起了python,甚至django
- 我的第一个Windows程序
- jquery hasClass、removeClass、addClass方法
- Yet Another Multiple Problem(bfs好题)
- SSD算法 模板 匹配
- CSS那些事儿笔记
- lightoj1130【圆与多边形面积交】
- 3jsp+servlet+mysql
- 线段树模板