一、封装特性
通过把数据在类中设为私有,来进行数据隐藏和数据访问保护。在类中暴露出有限的访问接口,供外部调用,可以达到两个目的:一是可以保护数据免于被删改,二是通过有限的函数接口可以提高类的易用性,再具体点来讲就是,使用者不用再完全了解类所有内容的情况下,仅通过使用必要接口来访问数据。
二、抽象性
封装的意义主要在于数据保护,对使用者隐藏不必要的信息,使用者只需关心类中提供了哪些功能,不需要关心具体是怎么实现的。而抽象通过抽象类和接口类实现(python中通过@abstract实现抽象函数和抽象类)。面向对象的抽象特性,可以提高代码的可扩展性、维护性、修改具体的实现不用改变定义,减少改动范围。就如python中@abstract标记的函数而言,可能会存在多个类重写该抽象函数,如果某一具体类改变了实现方式,并不会影响到其他类中的实现。另一方面,在处理具体问题设计时,可以先抽象出具体要实现功能(抽象函数),过滤到不必要的信息。
三、继承性
继承表示的是一种is-a关系,也就是“水果”和“香蕉”的关系。继承也会存在单继承与多继承(菱形继承问题),面向对象编程中,通过类的继承可以提高代码的复用性,如最近工作中的ListView问题
四、多态性
多态是指在继承过程中,子类中的函数可以替换父类中的函数,python 中通过super函数,在子类中同时调用父类和当前子类中的函数,多态可以提高代码的复用性 。