java面向对象的三大特征,五大基本原则

java面向对象的三大特征,五大基本原则

三大特性:封装,继承,多态。

1)封装

将对象的属性和实现细节隐藏起来,只提供公共的访问方式。

  好处:a。将外界的变化隔离开,使程序具备独立,安全和稳定性。

             b。便于设计者使用,提高了代码的复用性

  方式:将某一功能,属性抽离出来,独立写成单独的方法或类。

             设置访问权限可以限定该功能或属性可以被特定的访问者访问,保证了程序的安全性和功能的稳定性。

2)继承

继承是从已有的类派生出新的类,新的类能继承已有类的数据属性和行为,并扩展新的功能。

  作用:a。父类具备的方法子类可直接继承过来,不用重新书写,提高了代码的复用性

             b。让类与类之间产生了关系,有了关系才有了多态的实现。

             c。java支持单继承,译为多继承存在安全隐患(当多个父类存在相同功能时,子类不确定要运行那个),java支持多层继承,即父类还可以继承其他的类。java用另外一种机制解决了单继承的问题,即多实现。

3)多态

允许不同类型的子对象对统一消息做出不同的响应。

 java中多态的表现形式:a。父类引用指向子类对象

                                        b。父类引用几首自己的子类对象

五大基本原则 SPR, OCP, LSP, DIP, ISP

1)单一职责原则SRP(Single Responsibility Principle)

是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

2)开放封闭原则OCP(Open-Close Principle)

一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

3)替换原则LSP(the Liskov Substitution Principle LSP)

子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

4)依赖原则DIP(the Dependency Inversion Principle DIP)

具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能 造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

5)接口分离原则 ISP(the Interface Segregation Principle ISP)

模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来

你可能感兴趣的:(java面向对象的三大特征,五大基本原则)