Java基础知识复习笔记(1)--面向对象编程(OOP)

1. 从面向过程到面向对象

早期计算机编程是基于面向过程的(如C语言),通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。面对复杂的业务关系,不断变化的业务流程,面向过程的设计与现实已经难以应付这些问题。
面向对象的思想,就是一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,将现实世界中的关系抽象成类、继承,实现对现实世界的抽象与建模。

面向对象相比面向过程的优势:

  • 结构清晰:面向对象的编程中,对象被赋予属性和方法,更接近现实世界事物,更容易理解和维护。
  • 封装性: 面向对象良好的封装性优势表现为其对内部的修改,对外界产生影响较小。
  • 易拓展性: 面向对象编程,代码更好的被重用,更容易进行拓展,可以更好的应对业务的变化。

面向对象相比面向过程的劣势:

  • 增加的工作量: 如果一味地强调封装,当修改对象内部时,对象的任何属性都不允许外部直接存取,则要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
  • 性能低: 由于面向对象更高的逻辑抽象,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小的都开销很大。

面向对象的优点:

  • 代码开发模块化,更易维护和修改。
  • 代码复用性。
  • 增强代码的可靠性和灵活性。
  • 增加代码的可理解性。

2. 面向对象的四个特性

  • 抽象
    抽象描述了一个对象的基本特征,可以将这个对象与所有其他类型的对象区分开来,因此提供了清晰定义的概念边界。抽象关注一个对象的外部视图,用来分离对象的基本行为和实现。我们可以理解为抽象关注接口,即可观察到的行为;而封装则关注这些行为的实现。

抽象的两个原则:

  • 最少承诺原则:对象的接口只提供它的基本行为。
  • 最少惊奇原则:抽象捕捉了某个对象的全部行为,不多也不少,并且不提供抽象之外的惊奇效果和副作用。

评判抽象的品质:

  • 耦合:模块之间的关联强度应该是比较弱的,即低耦合。

  • 内聚:模块内的各个元素的联系时紧密的,即高内聚。

  • 充分性:类或模块应该记录某个抽象足够多的特征,从而允许有意义的、有效的交互。

  • 完整性:类和模块的接口记录了它的全部特征。

  • 基础性:只有访问该抽象的底层表现形式才能够有效的实现那些操作。

  • 封装
    封装给对象提供了隐藏内部属性和行为的能力,对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。

封装优点:

  • 通过隐藏对象的属性来保护对象内部的状态。

  • 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。

  • 禁止对象之间的不良交互提高模块化。

  • 继承
    就像现实中,孩子会继承父母的一些特征,面向对象使用继承机制实现代码的复用,多个类所公用的代码部分可以只在一个类中提供,而其他类只需要继承即可。继承给对象提供了从基类获取字段和方法的能力,继承提供了代码的重用性,也可以在不修改类的情况下给现存的类添加新特性。

  • 多态
    多态指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

实现多态,有二种方式,覆盖,重载。
覆盖: 指子类重新定义父类的虚函数的做法。

  • 重载: 指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

抽象和封装的不同点
抽象和封装是互补的概念:一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。

3. 面向对象五大设计原则

  • 单一职责原则(SRP)
    一个类应该仅有一个引起它变化的原因,这意味着一个类应该只做一件事情。

  • 开放封闭原则(OCP)
    对象或实体应该对扩展开放,对修改封闭。

  • 里氏替换原则(LSP)
    子类可以替换父类并且出现在父类能够出现的任何地方。

  • 依赖倒置原则(DIP)
    实体必须依靠抽象而不是具体实现。它表示高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。

  • 接口隔离原则(ISP)
    不应强迫客户端实现一个它用不上的接口,所以,使用多个专门的接口比使用单个接口要好的多。

参考引用:

1. http://blog.csdn.net/luoxinwu123/article/details/8446094
2. http://www.cnblogs.com/ysyn/p/3380856.html
3. http://www.importnew.com/10980.html
4. http://blog.jobbole.com/86267/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容