面向过程和面向对象的对比:
面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者,也就是对象,及各自需要做什么
比如:洗衣机洗衣服
面向过程会将任务拆解成一系列的步骤(函数)
1.打开洗衣机-->2.放衣服-->3.放洗衣粉-->4.清洗-->5.烘干
面向对象会拆出人和洗衣机两个对象:
人:打开洗衣机,放衣服,放洗衣服
洗衣机:清洗,烘干
可以看出,面向过程比较直接高效,而面向对象更易于复用,扩展和维护
说到面向对象就离不开它的三大特性:封装,继承,多态
①封装:
封装就是屏蔽细节只对外暴露实现,把数据隐藏起来,封装让数据的属性私有化,对数据的访问只能通过调用数据对外开发的方法来操作,比如我们的getset方法。
良好的封装能够对我们模块之间达到高内聚,低耦合,这也是我们程序一直所追求的,并且通过这种思想隐藏了我们内部的复杂性,只对外公开简单的接口,便于我们外部的调用,从而提高系统的可扩展性、可维护性
private:同一个类中
default:同一个包中
protected:不同包的子类
public:同一个工程
②继承:
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或者功能,也可以用父类的功能,通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。
③多态:
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,也就是一个引用变量到底会指向哪一个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
多态实现条件:继承,重写,向上转型