- 多个类使用相同的方法和属性,应该把相同的方法抽象到父类中,减少代码的冗余
- A类和B类需要调用相同的方法,创建C类,A和B继承C,A(C),B(C),A的对象和B的对象就可以直接调用C中的方法
- A和B有相同的方法,一部分功能相同,还有不同的部分,创建父类C,把相同的部分放到C类的方法中,在A/B中保留不同的部分,然后分别在A/B中调用C类方法即可。
- super().__init__继承属性,重写且需要在父类方法上加功能用super()
- 多继承之间,广度优先原则
- 横向,广度,纵向,深度
- C3算法
- 类名.mro()查看多继承的继承顺序
- 横向,广度,纵向,深度
- 在python3中,的所有所有类都是object的子类
- 对于一些内置的方法会写在object类中,如果子类不定义,在调用的时候,最终会调object类的方法
- 所有继承object类的都是新式类
- 在python3中都是新式类
- 在python2中不继承object类都是经典类
- 在多继承中遵循深度优先
- 经典类中没有super()和mro()方法
- 多继承是Python的特性
- 在多继承中遵循深度优先
- 对于一些内置的方法会写在object类中,如果子类不定义,在调用的时候,最终会调object类的方法
- 子类方法的继承、重写
- 1.父类的非私有属性和非私有方法,子类可以直接继承,子类对象可以直接使用。如果子类要调用父类的私有属性和私有方法,只能通过间接的方法来获取。
- 2.子类可以实现父类没有的属性和方法,与继承的属性和方法互不干扰。
- 3.如果在子类中有跟父类同名的方法,但方法中执行的内容不同,则子类可以重写父类方法。
- 当子类实现一个和父类同名的方法时,叫做重写父类方法。直接在子类中定义与父类同名的方法,然后在方法中实现子类的业务逻辑,子类方法就会覆盖父类的同名方法。子类重写了父类方法,子类再调用该方法将不会执行父类的方法。
- 当子类实现一个和父类同名的方法时,叫做重写父类方法。直接在子类中定义与父类同名的方法,然后在方法中实现子类的业务逻辑,子类方法就会覆盖父类的同名方法。子类重写了父类方法,子类再调用该方法将不会执行父类的方法。
- 4.如果在子类重写父类的方法中,需要使用父类同名方法中的功能,在父类功能基础上做扩展,则子类可以在重写的方法中调用父类被重写的方法,使用super()来调用。
- 1.父类的非私有属性和非私有方法,子类可以直接继承,子类对象可以直接使用。如果子类要调用父类的私有属性和私有方法,只能通过间接的方法来获取。