面向对象概论之继承简述,组合简述,菱形继承简述

一.继承

1.简述:

用来表述的是类与类之间的关系,比如A继承了B,那么A会有B已有的方法和属性。

那么A称为子类,B为父类。(父类又叫:基类)

使用继承可以不再用重复写代码的情况下,从而重复使用代码。

提高了编程效率。

2.正确使用继承思想:

      1.先抽象然后再继承

      2.继承已经存在的类,可拓展或是修改原始功能

3.在继承里的属性查找顺序:

对象自己的----->所在的类中----->父类----->父类的父类------->Object

4.继承语法表达:

class 类名称(父类名称):
#类的内容

#在python中可以继承多个父类

5,派生

简述:

   在继承中,如果子类中出现了与父类中不同的属性和方法时,那么这个子类我们称为派生类

   由于子类一般都不会与父类一摸一样,所以派生类都是指的是子类。

6,覆盖

简述:

   也称之为重写。当子类出现了与父类名称完全一致的属性或方法时,子类的属性和方法会覆盖父类的,也就是说当子类找同样的属性和方法时,都是找子类自己的。

7,子类中访问父类中数据的语法:

方式1:
super(当前类名称,self).你要调的父类的属性或方法
方式2: super().你要调的父类的属性或方法
方式3: 类名称.你要调的父类的属性或方法(self)
#方式3与继承无关

关键点:当子类继承父类后,而且覆盖了父类的__init__方法时,

              必须在初始化方法的第一行调用父类的__init__方法,

              并传入父类所需要的参数

二,组合

1,简述:

     组合使用来描述两个对象之间的关系的,而且两个对象不是同个类型,而是对象1有对象2的关系

     比如,学生这个对象有电脑这个对象。

     将对象作为另一个对象的属性。

 

2,目的:

      也是为了重用现有代码

      相对继承来说,偶合度降低

 

三,菱形继承

1.新式类

任何显式或隐式的继承自己对象的类就称之为新式类。

在python3中全都是新式类

当出现了菱形继承时,在新式类里查找顺序,先深度,当遇到了共同的父类时,再广度找。

如下图:

情况一:当有共同父类时:

 情况二:当有个没有共同父类时:

2.经典类

不是对象的子类,仅在python2中出现

当出现了菱形继承时,深度就是优先的查找顺序。

 

原文地址:https://www.cnblogs.com/wujc3/p/11246873.html