面向对象的三大特性
1.封装
所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。在一个类的内部,某些属性和方法是私有的,不能被外界所访问。通过这种方式,对象对内部数据进行了不同级别的访问控制,就避免了程序中的无关部分的意外改变或错误改变了对象的私有部分。
2.继承
继承有这样一种能力,就是能使用现有的类的所有功能,并无须重新编写原来的这些类的基础上对这些功能进行扩展。通过继承创建的新类称为子类或派生类,被继承的称为基类。继承有两种,一种是实现继承,另外一种是接口继承。实现继承可以直接使用基类的属性和方法而无需额外编码,接口继承是指使用属性和方法的名称,但是子必须提供实现的能力。
3.多态
所谓多态就是对一个实例的相同方法在不同的情形下有不同的表现形式。多态机制使得不同内部结构的对象可以共享相同的外部接口,这就意味着,虽然不同的类的内部操作不同,但可以通过一个公共的类,它们可以通过相同的方式予以调用。
面向对象的五大基本原则
1.单一职责原则,指一个类的功能要单一,不能包罗万象。
2.替换原则。指子类可以替换父类并出现在父类能出现的任何地方。比如公司搞年会,所有员工都能参与抽奖,不管是新员工,还是老员工。
3.开放封闭原则,一个模块在更改性方面应该是封闭的,在扩展性方面应该是开放的。比如一个网络模块,原先只有服务端的功能,现在我要加入客户端的功能。
4.依赖倒置原则:就是要依赖于抽象,不要依赖于具体。简单的说,就是要对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块之间的耦合。
在面向过程开发中,上层依赖下层,当下层剧烈的发生变化时,上层也要发生变化,这样就导致了模块之间的耦合性太高,复用性降低,从而大大的增加了开发的成本。
然而面向对象就很好的解决了这个问题,一般情况下,抽象变化的几率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断的变化,只要抽象不变,客户端程序就不用去变化,这就大大降低了客户程序域实现细节的耦合度。
比如一个合资汽车公司现在要求开发一个自动驾驶系统,只要汽车上安装上这个系统,就可以实现无人驾驶,该系统可以在福特车系列和本田车系列上使用。
http://www.cnblogs.com/shaosks/archive/2012/02/07/2341639.html
5.接口隔离原则:不同的模块要通过抽象接口隔离开,而不是通过具体的类强耦合。