L20 Inheritance

  • 继承

    • class <name>(<base class>):
    • 共享基类的属性和方法(包括构造方法)
    • 子类可能会 override 基类的部分属性
    • 基类的类属性不会复制到子类,因此基类的类属性改变则所有子类的基类类属性都会更改
  • 组合或继承

    • 组合 --- has
    • 继承 --- is a
  • Multiple inheritance 多重继承,即继承多个基类

    • 如果多重继承中,基类的属性或方法有override的情况则优先看排在前面的基类的类属性或方法
    • 增删改查都是相通的
      • 增删改 --- 自己的属性
      • 查 --- 自己的、第一个基类、第二个基类等等,如果直接继承的基类都没有再从头找基类的基类
  • 总结

    • 虽然关系很复杂,记住两点
      • 增删改 --- 只作用自己属性
      • 查 --- 自己、(类)直接基类(从左到右)、基类基类(从左到右)

评论