分类:
2008-09-10 10:12:28
第一章:对象导论
Alan Kay总结的面向对象语言的五个基本特性
1)万物皆为对象
2)程序是对象的集合,他们通过发送消息来告知彼此所要做的
3)每个对象都有自己的由其他对象所构成的存储
4)每个对象都拥有其类型
5)某一特定类型的所有对象都可以接受同样的消息
访问控制
类 数据成员与方法 |
Public |
缺省 |
Public |
所有类 |
包中类(含当前类) |
Protected |
包中类(含当前类),所有子类 |
包中类(含当前类) |
缺省(friendly) |
包中类(含当前类) |
包中类(含当前类) |
Private |
当前类本身 |
当前类本身 |
复用具体实现
程序员新手常会由这有这样的印象:处处应该使用继承。这会导致难以使用并过分复杂的设计。实际上,在建立新类时,应该首先考虑组合,因为它更加简单灵活。
继承:复用接口
当源类(被称为基类、超类或父类)发生变动时,被修改的“副本”(被称为导出类、继承类或子类)也会反映出这些变动。
有两种方法可以使基类与导出类产生差异:
1.直接导出类中添加新方法----“像是一个(is-like-a)”关系
2.覆盖(overriding) -----“是一个(is-a)”关系
抽象基类和接口
抽象方法只能在抽象类内部创建,当该类被继承时,抽象方法必须被实现,否则继承类仍然时一个抽象类。创建抽象方法使得你可以将一个方法置于接口中而不必被迫为此方法提供可能毫无意义的方法体。
interface提供了接口与实现的完美分离
集合与迭代器
迭代器是一个用来选取容器中的元素,并把它呈现给迭代器用户的对象。容器通过迭代器被简单地抽象为一个序列。迭代器允许遍历这个序列而不用担心底层的结构,也就是说不用关心它是一个ArrayList、LinkedList、Stack还是其他什么东西。Java2提供了Iterator迭代器。
单根继承结构
在Java中,所有的类最终都继承单一的基类Object。单根继承结构保证所有对象都有具备某些功能。单根结构使得垃圾回收器(内置于Java中)的实现变得容易得多。其必须的支持功能可置于基类中,这样,垃圾回收器就可以发送恰当的消息给系统中的每个对象。Java的垃圾回收器“知道”对象何时不再被使用,并自动释放对象占用的内存。
容器只存储Object,所以当将对象引用置入容器时,他必须被向上转型为Object,因此它会丢失器身份。当把它取回时,就获取了一个对Object对象的引用,而不是对置入时的那个类型的对象引用。这里再度用到转型,向下转型为更具体的类型。向上转型时安全的,向下转型几乎是不安全的。Java负责向下转型的控制。
异常处理:处理错误
异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常处理就像是于程序正常执行路径并行的,在错误发生时执行的另一条路径。因为它是另一条完全分离的执行路径,所以它不会干扰正常的执行代码。异常提供了一种从错误状况惊醒可靠恢复的途径。现在不再是只能退出程序,你可以经常进行校正,并恢复程序的执行,这些都有助于编写出更健壮的程序。