写在前面
我所理解的继承,就像字面上的那样的意思的继承,儿子继承父亲的东西,比如,票子、车子、房子,在编程中的继承也是这样的子类会继承父类的公共的属性和方法,从而达到代码重复使用的目的,之所以是说公共的,是因为一些私有的是不能够继承来的,就像儿子不能继承老爸的回忆和一些想法,这是不能够给别的的,属于自身私有的,就算是亲儿子那也给不了啊,所以这也是继承的特性的一部分。
在python中,一个类型不但可以被继承给多个类型(相当于一个爸爸有好几个孩子这是允许的)而且一个类型还可以同时继承多个类型的公开的属性和方法,就像一个人有很多的王叔叔那样,强行解释一波吧,,周末,妈妈让王叔叔们带着出去玩,肯定先要跟第一个来接你的王叔叔一起去,坐着他的车子,花着他的票子,但路上他不跟你讲他跟妈妈的一些回忆,这是属于王叔叔自己的私人的,不能告诉你的。所以反映在程序中一个类型可以继承多个类型公共的属性和方法,是公共的。而且按照继承的先后顺序优先调用,一号王叔叔和十八号王叔叔都在等着,但是一号先来的,所以理应跟着一号王叔叔去玩,另一方面,如果本身就可以单独去玩,不需要调用一群王叔叔,那就自己一个人去,反映在程序中叫做方法的重写!
为什么要继承
达到代码的重复使用的目的。
继承的语法
class 类型(被继承的类型):
pass
继承中出现的术语
父类:被继承的类,也称为基类、超类
子类:当前类,也称为派生类
子类继承父类,体现的时A is a B的关系
子类继承父类,就可以使用父类中所有的公开的属性和方法
继承链
A继承B,B继承C,C继承D
A直接继承了B,间接继承了C,D;此时A创建的对象,可以同时使用B,C,D中所有公开的属性和方法
多继承
python中,一个类型,可以同时继承多个类型,同时拥有所有继承类型的所有公开的属性和方法
备注:在进行代码设计的过程中,可能会出现多继承,所以尽量不要在父类中定义相同名称的属性或者方法
备注2:如果父类中出现了相同名称的属性和方法,在使用的时候子类调用时会优先继承优先调用。
方法重写:
子类在自己类中重新定义父类中已经存在的方法,在执行该方法时,如果子类中没有重写就直接调用父类的方法,如果子类重写了该方法,就直接调用子类重写的方法!
扩展:子类中,访问父类的属性和方法:
classUser(Person):
def__init__(self, name, age):
#直接通过父类的类名称调用父类的属性和方法
Person.__init__(name, age)
#通过super()来调用父类的属性和方法
super().__init__(name, age)