面向对象和面向过程的区别:
1、思路不同
2、特点不同
3、优势不同。
面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了;而面向对象是将构成问题的事物,分解成若干个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为。面向过程思想偏向于我们做一件事的流程,首先做什么,其次做什么,最后做什么。面向对象思想偏向于了解一个人,这个人的性格、特长是怎么样的,有没有遗传到什么能力,有没有家族病史。
面向对象和面向过程的优缺点
面向过程是一种以过程为中心的编程思想,面向过程编程是基于“冯·诺依曼”模型的。面向过程的优点:流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。缺点:需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。面向对象优点:易维护、易扩展、易复用,有封装、继承、多态的特性、更容易设计出耦合的系统。缺点:性能比面向过程低。
面向对象的三个特性:
1.封装性
就是把属性和方法都放在一个类里面,而且还可以通过访问类的权限属性给区分开,更加安全,不想要释放的功能,直接搞成私有机制。
java中的四种修饰类型:
public、protected、default、private
作用域 | 当前类 | 同一个包 | 子孙类 | 其他包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
一般封装时属性都会用private修饰更为安全。
封装的好处:
(1)良好的封装能够减少耦合(代码与界面)
(2)类内部的实现可以自由修改的
(3)类具有清晰的对外接口(确定内容的访问属性,是公有还是私有;字段是只读、只写或者是可读可写等)
2.继承性
就是把之前已经实现好的代码或者方法通过继承的方法拿过来使用,能节省大量的代码量,符合代码设计里面的继承优秀代码特性。
继承的好处:
(1)继承使得所有的子类的公共部分都放在了父类中,使得代码得到了共享。提高了代码的重用性,避免了重复。
(2)继承可使得修改或扩展继承而来的实现都较为容易
(3)使类与类之间产生联系,为多态提供了前提
继承的缺点:
(1)继承具有入侵性(即继承必须拥有父类的所有非私有属性和方法)
(2)父类变,子类变
(2)继承破坏封装,父类实现细节暴露给子类,增大了两个类之间的耦合性
3.多态性
由于可以继承多个类,能够组合成多种特性,但多态的关键是覆盖,就是同一个方法可以用不同的方式去实现,展现出多态性。
多态的优点:
(1)提高了代码的维护性(继承保证)
(2)提高了代码的可扩展性(有多态保证)