面向对象第二特征---继承

写在前面


我所理解的继承,就像字面上的那样的意思的继承,儿子继承父亲的东西,比如,票子、车子、房子,在编程中的继承也是这样的子类会继承父类的公共的属性和方法,从而达到代码重复使用的目的,之所以是说公共的,是因为一些私有的是不能够继承来的,就像儿子不能继承老爸的回忆和一些想法,这是不能够给别的的,属于自身私有的,就算是亲儿子那也给不了啊,所以这也是继承的特性的一部分。

在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)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容