[Java编程思想] 对象导论

该系列文章是在读《Java编程思想》时的读书笔记。
一只菜鸟,如文章中有错误,还请指出,非常感谢。
欢迎相互交流。
                             -- QyQiaoo
文章列表

1. 抽象过程

  • 所有编程语言都提供抽象机制。可以认为人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。其中“类型”是指“所抽象的是什么?”
语言 抽象
汇编语言 汇编语言是对底层机器的轻微抽象
FORTRAN / BASIC / C (“命令”式语言) 这些语言都是对汇编语言的抽象
  • 程序员必须建立起在机器模型(位于“解空间”内,对问题建模的地方)和实际待解决问题的模型(位于“问题空间”,这是问题存在的地方)之间的关联;
  • 在面向对象的方式中,我们将问题空间中的元素及其在解空间中的表示称之为“对象”,这种思想的实质是:程序可以通过添加新类型的对象使自身用于某个特定问题
  • OOP允许根据问题来描述问题。而不是根据运行解决方案的计算机来描述问题;面向对象程序设计的挑战之一,及时在问题空间的元素和解空间的对象之间创建一对一的映射;
  • Booch对对象提出了一个更加简洁的陈述:对象具有状态、行为和标识

2. 每个对象都有一个接口

  • 每个对象都只能满足某些请求,这些请求由对象的接口(Interface)所定义;
  • 接口确定了对某一特定对象所发出的请求,如下图所示,类型/类名称为Light,可以向Light对象发出的请求是:打开 它、关闭它、将它调亮、将它调暗。


    电灯类图

3. 每个对象都提供服务

  • 当试图开发或者理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”
    将对象看作是服务提供者还有一个附带的好处:提高对象的内聚信性,高内聚性是软件设计的基本质量要求之一。

4. 被隐藏的具体实现

  • 访问控制存在原因:一、让程序员无法触及他们不该触及的部分;二、允许类库设计者改变类的内部结构而不用担心影响使用该类的程序员;
  • 访问控制有四种,如下所示:
访问控制字符
public 任何人都可以用
private 除类型创建者和类型内部方法外的任何人都不能访问
protected 除类型创建者和类型的内部方法及继承的类外的任何人都不能访问
default 同包中的类可以访问(包的访问权限)

5. 复用具体实现

  • 最简单的复用某个类的方式就是直接使用该类的对象
  • 复用也可以是将类的一个对象置于某个新类中,我们称其为“创建了一个成员对象”,(使用现有类合成新的类称之为组合(composition)),如果是动态发生则称之为聚合(aggregation),组合经常被视为“has-a(拥有)”关系。如:我们常说“汽车拥有引擎”,可用如下UML图表示:
    汽车拥有引擎
  • 注:组合带来了极大的灵活性。新类的成员对象通常都被声明为private,使得使用新类的客户端程序员不能访问他们,这也可用使得你在不干扰现有客户端代码的情况下,修改这些成员,也可以在运行时修改这些成员对象,以实现动态修改程序的行为,而继承不具备这样的灵活性,因为编译器必须通过继承而创建的类事假编译时的限制。

6. 继承

  • 通过继承我们可以实现以现有类为基础,复制它并发添加修改这个副本来创建新类,但当父类发生变动时,子类也会反映出这些变动,UML类图如下所示:

    继承

  • 父类包含了所有子类所共有的特性。

  • 父类和子类有着相同的基础接口,所以伴随着此接口必定有某些方法的具体实现。有两种方法可以使父类与子类产生差异:一、在子类中添加新方法;二、改变现有父类的方法,这被称之为覆盖(Overridding)那个方法

  • 若子类中没有添加新的方法,此时可以称子类完全替代一个基类对象,可以被视为纯粹替代,这种关系被称为is-a(是一个)关系;若添加了新的方法可以称为is-like-a(像是一个)关系。

7. 伴随多态的可互换对象

  • 在处理类型的层次结构时,经常想把一个对象对象不当作他所属的特定类型来对待,而是将其作为基类的对象来对待,这使得人们可以编写不依赖特定类型的代码。
  • 在Java中采用了后期绑定的概念解决了程序直至运行时才能确定代码的地址的问题;为了执行后期绑定,Java使用了一小段特殊的代码来替代绝对地址调用,这段代码使用在对象中储存的信息来计算方法体的地址。
  • 将子类看为父类的过程称为 向上转型(upcasting)

8. 单根继承结构

  • 单根继承结构保证了所有对象都具有某些功能,因此在系统中可以在每个对象上执行某些基本的操作,并且所有的对象都可以很容易的在对上创建,参数传递也得到了极大的简化,并且单根集成结构也使的垃圾回收器的实现变得容易很多。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,581评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,071评论 0 62
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,212评论 0 2
  • 简书写作一年多,我却只收获了300多个喜欢,40多个关注。面对如此惨淡的成绩,我的心里失落无比。 我曾一度怀疑自己...
    彼岸很美阅读 827评论 7 24
  • 天下熙熙皆为利来,天下嚷嚷皆为利往。不管一个人的理想是远大还是渺小,梦想是高尚还是低俗,绝大多数的人都是为了实现人...
    性感有才的郭郭阅读 229评论 0 1