Java编程思想(第三版) - 学习笔记

 

   最近在做一个vCloud 和 SpringSource方面的培训的准备,在网上查了一些资料,想先把Java方面的知识再重新过一遍,所以把Java编程思想再重新过一下吧,我手头有第四版的中文版本和第三版的英文版本,出于学习英语的角度和省事(电子版没那么沉)的角度选择了Java编程思想英文第三版,同时做一些学习比较和备注,好几亿不如烂笔头么。

==============================================================================

先看看 Thinking in Java 3rd 的目录,先了解一下这本书的大概,然后再一点一点深入吧,对象介绍,全是对象,程序流程控制,初始化与清除,隐藏实现,复用,多态,接口,错误处理,容器,I/O 系统,让我们一起来慢慢深入理解吧,加油,我与第四版对比了一下少了“泛型,反射和多线程”方向的内容吧,不过没关系等吧这些基础部分过完,再研究“泛型,反射和多线程”吧:

Catlog:

1. Introduction to Objects

2. Everything is Object

3. Controlling Program Flow

4. Initialization & Cleanup

5. Hiding the Implementation

6. Reusing Classes

7. Polymorphism (多态)

8. Interface & Inner Classes

9. Error Handling with Exceptions

10. Detecting Types

11. Collections of Objects

12. The Java I/O System

13. Concurrency

14. Creating Windows & Applets

15. Discovering Problems

16. Analysis and Design

 

===========================================================================

Chapter 1. Introduction to Objects 

 

本章介绍包括开发方法概述在内的OOP的基本概念,帮助读者扎实的了解面向对象的编程。

 

1. 抽象过程

对象简洁描述:对象具有状态,行为和标识。每个对象可以拥有内部数据(对象的状态),和方法(产生的行为),并且每个对象都可以唯一的与其他对象区分开来,每个对象在内存中唯一的地址。

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

3. 每个对象提供服务

4. 被隐藏的具体实现

将程序员按角色分为类创建者和客户端程序员。

访问控制的第一个存在的原因:让客户端程序员无法触及他们不应该触及的部分,这对客户端程序员来说其实是一项服务,因为他们可以很容易的看出那些东西对他们来说很重要,而哪些东西可以忽略。

访问控制的第二个存在的原因:允许设计者可以改变内部的工作方式而不用担心会影响到客户端程序员。

Java用三个关键字在类的内部设定边界(public, private, pretected)。这些访问访问指定词决定紧跟其后被定义的的哦纳西可以被谁使用。

public 对任何人都是可以使用的。

private 想你与客户端程序员之间的一度砖墙,如果有人使用访问private成员,就会在编译时得到错误信息。

protected关键字与private作用相当,差别仅在与集成的类可以访问pretected成员,

Java还有一种默认的访问权限,但没有使用前面提到的任何访问指定词时,它将发挥作用。称为包访问权限,因为在这种权限下,类可以访问在同一个包中的其他类的成员,但是在包外,这些成员如同指定了Private一样。


5. 复用具体的实现

代码复用,使用现有的类合成新的类,这种概念称为组合(composition),如果组合是动态发生的,通常称为聚合(aggregation)。组合经常被视为"has-a"拥有关系,"汽车拥有引擎"

实际上,在建立新类时,应该首先考虑组合,因为它更加简单灵活。如果采用这种方式,设计会变得更加清晰。一旦有了一些经验之后,便能够看出必须使用集成的场合了。


6. 继承

  当继承现有类型时,也就创建了新的类型。这个新的类型不仅包括现有类型的所有成员(尽管private成员被隐藏了起来,并且不可以访问),而且更重要的是它复制了积累的接口。

  通过集成而产生的类型等价性是理解面向对象程序设计方法内涵的重要门槛。

 

有两种方法可以使基类与导出类产生差异。第一种方法非常直接:直接在导出类中添加新方法。这些新方法并不是基类接口的一部分。第二种也是更重要的一种使导出类和积累之间产生差异的方法是改变现有基类的方法和行为,称为“覆盖 overriding” 那个方法。要想覆盖某个方法,可以直接在到处类中创建该方法的新定义即可。你可以说“此时,我正在使用相同的接口方法,但是我想在新类型中做些不同的事情。”

 

 

 

 

 

 

 

 


 

 

 

 

 

posted @ 2010-08-02 09:54  Jonson Li  阅读(339)  评论(0编辑  收藏  举报