何为面向对象?
类:图纸
父类:可以理解为基础类,这里需要正确理解父类这个名词所包含的等级高的信息,父类中的属性和方法是一个基础
子类:从父类中衍生出来的类,具备父类中的基础,可以在父类上做扩展方法,也可以重写父类的方法和属性
注意:父类不代表比子类更丰富,子类拓展父类,这里不能通过等级层次去理解,更合理的方法是从进化的角度分析这两个概念
对象:根据图纸造出来的车
继承:
python中子类会继承父类的方法和属性,包括私有属性和私有方法,但通常不建议使用它们
封装:
主要利用私有属性和私有方法实现封装,好处就是修改这个类的内部方法而不影响使用这个类的代码(比如有更优的算法可以实现排序,那就可以直接替换封装好的类的排序方法而不用改动调用这个类的代码)
多态:
多态允许使用一个单一类型的实体(如变量,函数,接口)来代表多种类型的对象,简单来说,多态就是“一个接口,多种实现”。
如何理解多态?
通过编写处理父类对象的代码,这些代码可以用于所有的子类对象,即通过父类就可以实现(批量/统一)管理不同的子类对象,这些子类对象继承父类有多种实现,差不多等于多态的子类对象。
如何理解对象和类class的关系?
图纸和图纸造出来的东西的关系,在看项目源代码时,看到class很容易就想是不是这个类里面的代码完成了对应的功能,从最终执行来说,确实是这样,但准确来说这不是面向对象编程(oop)的思想,按照oop来说是这个class构造的对象实现了相关的功能,oop中一切皆是对象,这里我还没有从传统的顺序执行的代码编程中跳出来。
class定义了对象的数据和方法, 不同对象通过调用彼此的方法来完成交互, new一个class的对象后就可以对多个对象进行交互,这些待交互的对象又是通过其它的class创建的,可以一直追溯到计算机的底层原理。(可以结合gcc新版本是用旧版本的gcc编译的)