本章中,作者主要向我们介绍面向对象编程的概念,以及使用该种方式的编程的简便性。
2.1 抽象的进步
该节讲述了抽象的含义,通过Java的基础语言SmallTalk,总结了“纯粹”的面向对象设计的具体形态:
1) 所有的东西都是对象。
2) 一个程序建立在多个对象,这些对象通过信息的交互来完成一系列被要求的操作。
3) 每个对象有自己的存储空间。它可以通过容纳或者封装的形式构建一个新的对象,从而实现任意高复杂的程度。
4) 每个对象都有一种类型,每个对象都是一个类的实例,而这个类就是一种类型,这决定了能将什么类型的消息传送给它。
5) 同一个对象能接受相同的信息,因为它们都有相同的类型,正如第四点来说,他们所能被传递的类型是相同的。
2.2 对象的接口
对象对于类来说是一个实例,一个对象可以拥有多个实例(对象)。在这种情况下,我们如果想要对某个对象进行操作,那么就可以通过类已经定义好的接口来完成这项操作。
这样的好处在于书写出的代码是非常直观与简洁的。
2.3 实现方案的隐藏
对于构建被使用类的人员来说,他们仅仅提供对外的一些个接口能被使用,而为了实现支持这些个接口,那么势必就需要一些实现方法。而与此同时,他们又不希望自己的这些实现方法被外部使用者随意修改,这也就是实现方案的隐藏。
同时,因为外部使用者只是调用这些接口,所以在升级这些内部实现方案的时候并不需要担心对外部使用者开发的客户程序产生任何影响(这个亦可以成为降低耦合性)。
实现方案的隐藏通过以下四种控制关键字来实现:
1) public
任何人可使用
2) protected
只有该类自己的内部成员和继承的子类可访问
3) private
只有本类自身的可以访问
4) friendly
默认的控制方式,如果不声明,则为该项,它只能在“包”内访问。
2.4 方案的重复使用
往往,我们希望能够编写一个类,这个类中封装了一系列我们经常会使用到的方法,我们通过设置该类为私有成员对象的方式来进行方案的重用。
这样的操作,往往能够减少我们的代码量。
2.5 继承:重新使用接口
不同的类往往有不同的数据类型与方法,但是其中有些类却可能有某些类型的数据成员和成员方法。
这样,我们可以通过“克隆”的方式,来进行类的重用。
这种方式就是继承的形式,一个抽象类可以继承一个在这个抽象类基础上更为抽象的类。而我们可以定义不同的这些个抽象类,对不不同的细节,只需要在这些抽象类中再进行细节添加即可。
2.6 多形对象的互换对象
这里提到了多形对象,那么何为多形对象?
多形对象即为一个基础类的实例对象,它可以实例化不同的子类,来实现不同成员方法实现方式。这种实现方式,其实是对于方法的动态绑定。
另外需要注意的是,我们在实现具体类的时候,并不希望基础类能被创建出一个实际的对象,即并不希望基础类被实例化。那么,我们就可以通过关键字abstract这个关键字来防止这种事情的发生。一旦有人试图这么做,编译器会做出相应的警告。
2.7 违例控制:解决错误
“违例控制”顾名思义即为将错误控制方案内置到程序语言中,甚至于操作系统内。通过“违例”抛出来的错误,程序员可以自定义错误处理。
这样的处理,有利于程序的稳健性。
2.9 多线程
多线程,简单来讲,就是能同时进行多件任务的处理方式。等处理完其他一些问题,将处理结果返回给主线程。
最开始的是通过程序的中断服务来实现的,后来引入了线程的概念,通过将耗时操作交给线程来完成。
这种方式在机器只有一个处理器的时候,通过抢占的方式来执行。而如果机器存在多个CPU且数量大于线程数,那么每个线程都可以分配到一个CPU,这才是真正的并行运算。
2.10 永久性
Java提供了“有限永久性”,这种特性方便于程序下次启动时获取一些必要的信息,并不需要存入数据库等。
2.11 Java和因特网
Java提供了对于因特网的编程。