第一章 对象导论
1.1 抽象过程
(1)对象的定义
对象是指在问题空间的元素在解空间的表示。这个思想的本质就是通过添加新的类型使得其自适应于某个特定类型的问题。
(2)对象的特性
2.1 smalltalk语言是第一个面向对象的语言,它具有五个特性:
1.万物都是对象
2.程序是对象的集合,他们彼此发送消息告知彼此要做的事
3.每个对象具有类型
4.某个类型的所有对象可以接受同样的消息
2.2 对象可以视为一个变量,它存有相应的数据,具有相应的行为
2.3 程序可以视为对象的集合,彼此发送消息来完成相应的操作。
1.2 每个对象具有一个接口
决定接口的便是类型,决定了对象可以接受到什么样的消息,从而执行什么样的操作。
1.3 每个对象都提供服务
将对象视为服务的提供者,对象之间相互调用,发送消息从而实现程序的功能,提供相应的功能。从而提供相应的解决某个特定类型问题的服务。将对象视为服务的提供者,可以提高程序的内聚性。
1.4 被隐藏的具体实现
对同一个代码的使用,可以分为两个部分:1.类的创建者,2.客户端程序员
1.4.1类的创建者
类的创建者就是指编写相关代码的提供者。
1.4.2 客户端程序员
客户端程序员就是指使用类的创建者提供的类,从而实现相应的功能,他的工作就是去收集相应的工具从而实现相应的功能。
访问控制存在的原因主要是有两个:1.让类的创建者程序员只需要关注自己的代码实现,而无须担心影响到客户端程序员对该代码的调用。2.可以提醒客户端程序员哪些代码需要关注,哪些代码他无须关注。
1.4.3 对类进行定义的访问边界
public,private,protected,默认访问权限 -- 会对后面修饰的部分产生相应的权限控制信息。
1.4.4 复用的具体实现
所谓代码的复用指的就是代码的重复使用。主要是通过组合,聚合,继承三种方式来实现。
1.4.4.1 组合
所谓组合指的就是通过旧有类来创建新的类型。而动态组合的过程,就是聚合。其实就是在相关的代码中添加相应的类,就像是一个搭积木的形式。
1.4.4.2 继承
所谓继承就是通过两个类之间的关系来实现代码的复用。
(1)实现方式
继承的实现方式主要有两种,一种就是在子类种添加新的方法,一种是在子类种覆盖父类的方法。
(2) 是一个和像一个的关系。
是一个指的就是在子类中覆盖父类的方法,从而实现相应的继承。主要是因为他们两个具有同样的接口,可以和父类接受同样的消息,所以可以将其和父类视为同样一个类别。而像一个,就是指它通过在子类中添加新的方法,从而导致子类具有父类不具有的行为。
1.5 伴随多态的可互换对象
将某个类看成其父类的对象,来编写相应的方法,使得相应的方法具有泛化的效果,从而不用担心考虑其具体的实现类的特征,给编写代码代来了方便。而这个具体的实现方式就是后期绑定。所谓后期绑定就是指在运行的时候,编译器才会知道它具体要执行的代码是哪一个,而这个后期绑定主要是通过添加一小段Java代码,这个代码存有相关的信息可以计算出方法体的存储位置。从而在运行的时候,知道应该执行哪一段代码。
1.6 单根继承关系
就是指在Java中所有的类都具有一个超类,这个类就是Object,该机制可以很方便地实现垃圾回收机制。
1.7 容器
1.7.1 定义
就是持有相应的对象的引用的集合。
1.7.2 为什么会有不同的容器
不同的容器可以提供不同的接口。
不同的容器可以对不同的操作提供相应的效率。
1.8 参数化类型
在1.5之前 容器中都是包含的是Object对象,当从其中取出相应的对象信息的时候,在向下转型的时候由于不知道其具体对象的类型,从而导致相应的向下转型的失败。所以在创建相应的容器的时候,需要向容器中传入相应的参数信息。
1.9 对象的创建和生命期
对象的创建主要是在堆上完成的,对象的销毁主要是通过垃圾回收机制来实现。
1.10 异常处理机制
为了提高程序的鲁棒性,在Java程序中提供了相应的异常处理机制,从而不会出现某个问题的时候,就会报错,给用户体验带来非常不好的感受。
1.11 并发编程
在这里我主要用一个例子来进行相应的讲解,就是当你登录相应的页面的时候,你可以点击相应的按钮,从而触发相应的代码。而无须等待页面代码执行完成,才会响应相应的点击行为。
对于并发编程主要有的问题就是资源共享的问题。