Vary's Blog

面向对象基础

一个面向对象的程序( OOP )实际上就是一个相对去中心化、模块化的程序。
对于一个 OOP 来说,它的一个 “ 碎片 “ ,就是一个独立成立、保持自身完整性的单元;它可以和其他的 OOP” 碎片 “ 整合在一起形成一个可分解的指令结构。
“ 对象 “ 限制了程序漏洞所能造成的损害,有效地对功能实行了隔离,把每个功能都限制在一个可掌控的单元内,这样一来,即使一个对象崩溃了,程序的其他部分也能够继续运转。
程序员可以把这个坏掉的单元换掉,就好像我们可以给一个汽车换刹车片一样。
再比如:
我们做的 app ,它有许多的功能,每一个功能它对应一个模块。我们通过一个一个实现再把这些模块堆起来,通过我们的接口、方法、回调等把它们组合起来,最后形成我们的面向对象程序,也就是最后生成了我们的 app .
模块自身应该是单一的、高内聚的,模块与模块之间应该是低耦合的

面向对象三大特征

JAVA面向对象最重要的特征就是:封装,继承,多态(所谓的三大特征)。
以下就个人体会来简单讲一下.

封装

封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。该逻辑单元负责将所描述的属性隐藏起来,外界对客体内部属性的所有访问只能通过提供的用户接口实现。

优点

  1. 封装就是隐藏实现细节。使用者只需要关注怎么用,而不需要关注内部是怎么实现的。实现细节可以随时修改,而不影响使用者。
  2. 抽取可复用的逻辑单元,统一处理,提高效率。

缺点

过度封装会不利于程序扩展,可变性降低.

继承

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

优点

代码重用:子类继承父类后拥有父类的属性成员,可以很好的复用已有的类,不需要再重复写方法属性.

缺点

  1. 如果继承很重,那么子类不管要不要,有没有用,都会拥有父类的所有东西,影响子类性能造成代码冗余.
  2. 继承可能破坏封装:因为子类和父类之间可能存在着实现细节的依赖.
    子类在继承父类的时候,往往不得不关注父类的实现细节,而父类在修改其内部实现的时候,
    如果不考虑子类,也往往会影响到子类.

多态

多态的作用,就是把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化.

多态在设计模式中扮演着非常非常重要的角色.
策略模式,里氏替换原则等就是多态的特性的最好阐述.

优点

  1. 消除类型之间的耦合关系.
  2. 可实现动态绑定,增加可扩展性.

缺点

会使代码可读性变差,在定位代码的时候比较麻烦,需要去寻找具体的实现类。

Vary Zhao wechat
欢迎你扫描上面的二维码,加我微信