您的位置:首页 > 其它

继承和多态

2015-10-09 19:06 260 查看
继承

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类型的函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: