《java编程思想》读书笔记-1

第一章   对象导论

1.1 抽象过程

1. 程序可以通过添加新类型的对象使自身适用于某个特定问题。

2. 万物皆可对象:对象可存储数据、可在自身执行操作;

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

    每个对象都有自己的由其他对象所构成的存储,即 可以通过创建包含现有对象的包的方式来创      建新类型的对象;

    每个对象都拥有其类型;

    某一特定类型的所有对象都可以接收同样的消息(有同样的方法)

3. 对象具有状态(由对象内部数据反映)、行为(方法)、标识每一个对象在内存中都有唯一的地址)。

1.2 每个对象都有一个接口

1. 类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。

2. 接口确定了对某一特定对象所能发出的请求(该对象的方法)。

1.3 每个对象都提供服务

1. 当正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为 “服务提供者”,程序通过调用其他对象提供的服务来向用户提供服务。

2. 在良好的面向对象设计中,每个对象都可以很好的完成一项任务,但它并不试图做更多事。

1.4 被隐藏的具体实现

Java 用三个关键字在类的内部设定边界:

public: 修饰的元素任何人可用

private: 修饰 只有类型创建者和类型的内部方法可访问 的元素

protected: 与 private 的区别仅在于 继承的类可以访问 protected 的成员,但不能访问private的成员。

1.5 复用具体实现

1. 最简单的复用某个类的方式就是 直接使用该类的一个对象。

 此外也可以将那个类的一个对象置于某个新的类中(创建一个成员对象)。这叫做“组合”,是一种“has-a(拥有)”关系,例如“汽车拥有引擎”,如果组合是动态发生的,就被称为“聚合”。新类的成员对象通常被声明为private,使得使用新类的客户端程序员不能访问它们。

2. 建立新类时,比起使用继承,应该优先考虑使用更为简单灵活的“组合”

1.6 继承

1. 当继承现有类型时,也就创造了新的类型。这个新的类型不仅包括现有类型的所有成员(其中private成员被隐藏了起来,并且不可访问),还复制了基类的接口(方法)。

2. 有两种方法可以使基类与导出类产生差异:

  • 直接在导出类中添加新方法
  • 改变现有基类的方法的行为(覆盖 overriding),即 在导出类中重新定义该方法。
1.6.1 “是一个” 与 “像是一个” 关系

is-a : 只覆盖基类的方法

is-like-a : 添加了新的接口元素

1.7 伴随多态的可互换对象

多态:把一个对象不当做它所属的特定类型来对待,而是将其当做基类的对象来对待。

例如 批量处理 继承于同一个基类的多个导出类对象“们” 时,会想要使用多态。这些对象在调用同一方法时各自执行不同的代码。

靠什么实现:面向对象程序设计语言的方法具备的后期绑定属性(对Java而言是默认行为)。

1.8 单根继承结构

Java 中所有类都是 Object 的子类, 这使得 在上创建对象、垃圾回收等的操作更加方便(所有类型的对象都被当作Object)。

1.9 容器

很多对象的大小只有运行时才能获得,这时就创建了一种新的对象类型---容器(集合) 来记录对这些对象的引用。

1.9.1 参数化类型

1. 向上转型(把导出类看做基类)是安全的,向下转型几乎是不安全的。

2. 安全起见,容器的使用引入参数化类型(即 泛型)——编译器可以自动定制作用于特定类型上的类。

1.10 对象的创建和生命周期

1. 对象占用资源,特别是内存,

2. C++ 讲究效率,由程序员在编写程序时确定对象的存储空间和生命周期,可通过将对象置于堆栈或静态存储区域来实现。

3. Java 则完全采用了动态内存分配方式,在堆(heep)中动态地创建对象,直到运行时才知道需要多少对象、对象的生命周期以及对象的具体类型,因此堆中存储空间的管理分配时间也增加了,但动态方式下编程的灵活性也更大。

4. Java 优于 C++ 的几个点:垃圾回收机制、Object单继承、只在堆上创建对象。

1.11 异常处理:处理错误

1. 异常是一种对象,它从出错点被抛出,被相应的异常处理器“捕获”。

2. 异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。

3. 异常不能被忽略,他保证一定会在某处得到处理。

4. 异常提供了一种从错误状况进行可靠恢复的途径。

1.12 并发编程

1. 通常,线程只是一种为单一处理器分配执行时间的手段,但如果操作系统支持多处理器,那么每个任务都可以被指派给不同的处理器,并且他们是在真正地并行执行。

2. 隐患:共享资源。

1.13 Java 与 Internet

Java 解决了在万维网(WWW)上的程序设计问题。

1.13.1 Web 是什么

1. 客户/服务器计算技术:

服务器:信息存储池、用于分发信息的软件以及信息与软件所驻留的机器或机群。

服务器所服务的客户机有若干个。

2. 其中一个很重要的性能问题是 延迟,有时会使用中间件将负载分散给在服务器端的其他机器(中间件也被用来提高可维护性)。

3. Web 就是一个巨型的客户/服务器系统。

4. Web浏览器使得一段信息不经修改就可以在任意型号的计算机上显示。

5. 浏览器只是一个观察器,因为它甚至不能执行最简单的计算任务。

1.13.2 客户端编程

1. 客户端编程意味着Web浏览器能用来执行任何它可以完成的工作,使得返回给用户的结果更加迅捷,网站更具交互性。

2. 客户端编程与传统编程的不同之处在于平台。

3. 关于插件、脚本语言(例如JavaScript)略。

4. Java 通过 applet 以及使用 Java Web Start 来进行客户端编程。applet 是在Web浏览器中运行的小程序,它提供一种分发软件的方法,一旦用户需要客户端软件,applet 就从服务器把客户端软件分发给用户。

5. 备选方案: Macromedia 的 Flex,允许创建基于 Flash 的、与 applet 相当的应用。

6. .NET 和 C#

.NET 平台大致相当于Java虚拟机和Java类库,C# 和 Java 有类似之处。

7. Internet 与 Intranet

当Web技术仅限用于特定公司的信息网络时,它就被成为Intranet(企业内部网)

1.13.3 服务端编程

部分Web服务器是基于Java的,它使得我们可以 用Java编写被称为 servlet 的程序 来实现服务器端编程。

1.14 总结 略

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值