面向过程
面向过程是实际生活中用到的解决问题的方法,主要针对 过程(步骤),
例如下班回家后,要自己买菜,烧水,做饭,当这些步骤、过程都完成以后。就可以吃到热饭。这就是面向过程最直接的体现。每件事都要自己做,面向过程中最核心的思想就是 亲力亲为。
面向对象
下班后,直接下馆子。告诉服务员点菜,服务员告诉后厨烧什么菜。而自己只需要坐等饭菜端上来即可。
在这个例子中就体现了面向对象的思想,不用去担心具体的功能实现,只需要关注功能点本身能实现什么功能即可
面试官您就是按照面向对象的思想在思考问题,面试官您本身就可以开发项目,但是项目有可能比较大,一个人开发周期长,为了提高效率,需要有更多的具备专业开发能力的人来帮助您做事情,这个人就是您所需的对象,只要调用这些对象的开发功能就可以完成项目,只要指挥他们做事情就可以了。
面向对象的优点
-
面向对象更符合人们思考习惯的思想。
-
面向过程中更多的体现的是执行者,面向对象中更多的体现是指挥者,指挥对象做事情。
-
面向对象将复杂的问题简单化
- 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
- 程序设计的重点在于数据而不是过程;
面向对象和面向过程并不是互斥的,事情无论是自己做 还是要别人做 最终都要被处理(过程),都有过程这一环节,对自己来说是面向对象,对别人来说是面向过程的。面向过程是最基本的思想,面向对象是面向过程之上的一种优化方式。
对象的三大特性
封装
封装可以隐藏类的内部属性,并且对用户隐藏了数据的访问方式,这样可以保护类的内部状态。
将类中的所有数据私有化,仅对外提供公共的访问方法getter,setter,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。
在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 保证了数据的完整性。
继承
在 OOP中,继承的概念很好的支持了代码的重用性(reusability),
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,父类是子类的一般化,子类是父类的特化(具体化)
多态
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。