第一章对象导论(1.7-1.13)

1.7伴随多态的可互换对象

  • 在处理类型的层次结构时,经常想把一个对象不当做它所属的特定类型来对待,而是将其当做其基类的对象来对待。
  • 这样的代码是不会受添加新类型的影响,而且添加新类型是扩展一个面向对象程序以便处理新情况的最常用方式。
  • 在java中,动态绑定是默认行为,不需要添加额外的关键字来实现多态。

1.8单根继承结构

  • 在单根继承结构中的所有对象都具有一个共用接口,所以他们归根结底到底都是相同的基本类型。
  • 单根接口保证所有对象都具备某些功能。
  • 对象都可以很容易地在堆上创建。

1.9容器

  • 不同容器提供了不同类型的接口和外部行为。
  • 不同的容器对于某些操作具有不同的效率。
  • 除非确切知道所要处理的对象的类型,否则向下转型几乎是不安全的。

1.10对象的创建和生命期

  • 将对象置于堆栈(它们有时候被称为自动变量或限域变量)或静态存储区内来实现。这种方式将存储空间分配和释放置于优先考虑的位置,某些情况下这样控制非常有价值。但是也牺牲了灵活性。
  • 第二种方式是在被称为堆的内存池中动态地创建对象。这种方式中,知道运行时才知道需要多少对象,它们生命周期如何,以及它们的具体类型是什么。
  • java完全采用了动态内存分配方式,每当想要创建新对象时,就要使用new关键字来构建此对象的动态实例。

1.11异常处理:处理错误

  • 异常处理将错误处理直接置于编程语言中,有时甚至置于操作系统中。异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。
  • 异常提供了一种从错误状态进行可靠恢复的途径。
  • 异常处理不是面向对象的特征。异常处理在面向对象语言之前就已经存在了。

1.12并发编程

  • 在程序中,这些彼此独立运行的部分称之为线程,上述概念被称为“并发”。
  • 通常,线程只是一种为单一处理器分配执行时间的手段。

1.13Java与Internet

  • 它解决了万维网上的程序设计问题。