Think in Java 第一章(对象导论)

信仰

1.1 抽象过程

1>万物皆对象
在这个世界上可知的事物可以用语言 来描述它 ,编程也是一样我们可以用编程语言描述一切事物(外观 行为 特征),只要你想得到。

2>程序是对象的集合,它们通过发送消息来告知彼此所要做的 (方法调用)

3>每个对象都有自己的由其他对象所构成的存储(对象可以由其他对象组成)

4>每个对象都拥有类型(每个对象都有其独特性 根据功能可以发送什么样的消息给它)

5>某一特定类型的所有对象都可以接收同样的消息

1.2 每个对象都有一个接口

接口确定了对某一特定对象所能发起的请求 ,向某个实现特定接口的对象发送消息,这个对象便知道此消息的目的,然后执行对应的程序代码

1.3 每个对象都提供服务

开发理解程序时,将对象理解为“服务提供者”,它(程序)通过调用一系列对象提供的服务解决问题,我们做的就是去创建或是去寻找能够提供理想服务解决问题的一系列对象集合,在这个过程中每个对象提供特定服务(而不是把多个功能让一个对象实现)

1.4 被隐藏的具体实现

访问控制:
1>让客户端程序员无法触及不应该触及的部分
2>允许库设计者可以改变类内部的工作方式不用担心会影响到客户端程序员

private(私有 该类对象访问)
default (包访问权限 同包访问)
protected(保护访问权限 本身及子类访问)
public (all)

1.5 复用的具体实现

通过组合实现复用(使用现有类合成新类)。
建立新类时,首先考虑组合,因为它更简单灵活。

1.6 继承

对象这种概念,将数据和功能封装到一起,用关键字class表示,形成了编程语言中的基本单位,但是这样做有许多麻烦,创建一个类,即使另一个新类与其具有相似的功能,你还得从新建一个类,为了解决这个问题 继承产生了。
继承现有类时创造了新的类型,这个类型包括继承类的所有成员(尽管private成员被隐藏起来不可访问)更重要的是他复制了基类的接口,这时可以对功能方法的覆盖或者添加。

1.7 伴随多态的可互换对象

处理类型的层次结构时,经常想把一个对象不当做他所属的特定类型来对待,而是将其当做基类(Object)来对待。这使得人们编写出不依赖于特定类型的代码。

1.8 单根继承结构

在单根继承结构中的所有对象都具有一个公用接口,所以它们归根结底是相同的基本类型,单根继承结构保证所有对象具备某些功能,比如垃圾回收机制

1.9 容器(这一节把书本内容打了一遍)

在解决某个特定问题时需要多少对象,或者它们存活多久那么就不可能知道如何存储这些对象,如何才知道需要多少空间创建这些对象,答案是你不可能知道,因为这类信息只有运动是才获取。对于面向对象设计中的大多数问题而言,这个问题的解决方案似乎过于轻率,创建另一种对象类型这种新的对象类型持有对其他对象的引用。当然,你可以用在大多数语言中都有的数组功能的数组类型来实现相同的功能,但这个通常被称作为容器(也成为集合,不过Java类库以不同的含义使用集合这个术语,所以本书将使用容器这个词),在任何你需要是都可以容纳你置于容器中的所有的东西。因此不需要将来要把多个对象置于容器中,只需要创建一个容器对象,然后让他处理所有细节。
幸运的是,好的OOP语言都有一组容器,它们作为开发包的一部分。在c++中,容器是标准c++类库的一部分,经常被称为标准模板库,Java在其标准库中也包含大量的容器,在某些类库中一两个通用容器足够满足所有的需求,但是在其他类库中,具有满足需要的各种类型的容器,例如List,Map,Set,以及诸如队列、树、堆栈等更多的构件。
从设计的观点来看,真正需要的只是一个被操作,从而解决问题的序列。如果单一类型的容器可以满足所有需求,那么就没有理由设计不同类型的序列了。然而还是需要对容器有所选择,这有两个原因,第一,不同容器提供了不同接口和外部行为。堆栈相比于队列就有不同的接口和外部行为,也不同于集合和列表的行为,它们中的某种容器提供的解决方案可能比其他容器更灵活。第二,不同容器对于某些操作具有不同的效果,最好的例子就是两种List的比较:ArrayList和LinkedList.它们都是具有相同接口和外部行为的简单徐磊,但是它们对某些操作所花费的代价却有着天壤之别。在ArrayList中随机访问元素是一个花费固定时间的操作;但是对于LinkedList来说随机选取元素需要在列表中移动,这种代价是高昂的,访问表尾的元素,花费的时间越长,而另一方面,如果想在序列中插入一个元素,linkedLIst的开销要比ArrayList小。上述操作以及其他操作效率,序列底层结构的不同而存在巨大差异,我们可以一开始使用LinkList构建程序,而在优化系统性能时改用ArrayList。接口List所带来的抽象,把在容器之间进行转换时对代码产生的影响降到最小限度

1.9.1 参数化类型

Java SE5之前容器中存对象,需要向上转型为Object,当使用时我们需要向下转型 (有两个方面问题)
1>可能在运行时转型错误
2>向下转型和运行时的检查需要额外的运行时时间
为了解决这两个问题 ,更安全更更快捷的Java SE5引入泛型

1.10 对象的创建和生命周期

在使用对象时,最关键的问题
便是他们的生成销毁方式,每个对象为了生存需要资源,尤其是内存,当我们不在需要一个对象时,它必须被清理掉,使其使用的资源得到释放和重用

1.11 异常处理:处理错误

异常处理将错误直接置于编程语言中,异常是一种对象,它从出错点被抛出,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。
java一开始内置异常处理,而且你必须强制使用它。
异常处理不是面向对象的特征,尽管在面向对象语言中异常被表示成一个对象。异常处理在面向对象之前就已经存在了。

1.12 并发编程

同一时间处理多个任务。
如果多个任务同时访问同一资源就会出现数据安全问题

1.1.3 Java 与Internet

Java解决了万维网上的程序设计问题

总结 从对象的导论来看 粗略涵盖java大致内容

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,605评论 18 399
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,738评论 0 14
  • 这段时间,宝能城册之丘不但在深圳红起来,也刷爆了地产人的盆友圈,看来这个有情怀的售楼处,不但深得深圳市民的心,也让...
    李小二说事阅读 2,554评论 0 0
  • 我不是拜金主义者,但生活让我明白了一个道理,贫穷的可怕在于: 它没有心疼,没有怜悯,更没有帮助,既使你在苦苦挣扎,...
    星辰_star阅读 191评论 0 0
  • 灯光悠黄,音乐轻缓,夜色里,掩掩欲遮的是你的优雅。 你的香水味很淡,只占据了我四分之一的鼻息;红唇不烈,原谅我永远...
    我是兰康阅读 582评论 0 1