首先面向对象有三大基本特性即封装、继承以及多态。封装即是把客观事物抽象成类,该类中含有属性与方法。继承则是复用原有的类,并能在原有类的基础上进行扩展。多态则是父类在不同时刻以其不同子类的形态出现。面向对象想要达到的目的即是可扩展、易维护、可复用、灵活性好。
举一个例子来说明,比如我要修一台电脑,大家都知道电脑由主板、硬盘、内存、cpu等组成,实际上你可以把它们理解为相互分离的对象,它们之间依靠数据线(我们可以称之为接口)进行连接,从而达到了强内聚、松耦合的特性。现在主板坏了只需要维修主板,硬盘坏了只需要更换硬盘,而与其他组件无关。再必须现在你要修一台收音机,收音机采用的是链路板模式将众多组件焊接在一起,如同面向过程中发条式的代码。一旦出问题则需要对整个系统进行排查,一旦遇到困难问题,则整个系统都将废弃,发条式代码的弊端显露了出来。
面对发条式的代码,你可能会觉得它即实现了功能又简单明了,何乐而不为?但实际上此处的简单仅是业务上的简单,它所能解决得问题就只能是当前的一个问题。其维护与扩展困难,复用更无可能。而面向对象指在建立一种通用的解决办法,虽加深了业务复杂度,但其效果是显著的。中国的四大发明中有活字印刷术,它将每一个字都封装起来,方便扩展与复用,更加灵活的应对需求的变化。而活字印刷相比于印刷术并没有实质的创新。为什么活字硬刷术成为了四大发明之一。实则是因为思想的进步,而面向对象就是思想的进步。