对象
- 所有的东西都是对象
- 程序是一组对象的集合
-
- 通过消息传递,即发送一个调用请求
- 每个对象都有自己的存储空间,可容纳其他对象。
-
- 或者通过封装,可制作出新型对象。
- 每个对象都属于一个类型
-
- 每个对象都是某个类型的实例
对象的接口
- 句柄.消息
实现方案的隐藏
- 接口
-
- 规定可对特定对象可发送哪些请求
- 且必须在某个地方存在代码满足请求
-
- 一旦向对象发出一个特定的请求,就会调用那个函数。我们通常将这个过程总结为向对象“发送一条消息”(提出一个请求)。对象的职责就是决定如何对这条消息作出反应(执行相应的代码)。
- 访问控制
-
-
- 防止程序员误修改内部数据类型的设计思想
- 允许库设计人员修改内部结构
- 访问控制关键字
-
- “public”(公共)意味着后续的定义任何人均可使用
- “private”(私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息
- “friendly ”意味着它只能在这个包装的范围内使用
- “protected”只是一个继承的类可访问受保护的成员,但不能访问私有成员
-
方案的重复使用
- 组织
-
- 创建一个成员对象
-
- 仅直接使用那个类的对象。但同时也能将那个类的一个对象置入一个新类
- 新类的成员对象通常设为private
- 新类由任意数量而类型的其他对象构成,使其达到设计要求
继承:重新使用接口
- 继承
-
- 通过extends关键字实现
- 将新得的衍生类与原来的基础类区分开
-
- 为衍生类添加新函数(功能)
- 第二个办法是改变基础类一个现有函数的行为
等价与等类关系
- 等价关系
-
- 拥有完全相同的接口
- 等类关系
-
- 为衍生类型加入了新的接口元素
多形对象的互换使用
- 上溯造型
-
- 上溯造型成一种更“通用”的类型
- e.g:
- 动态绑定
-
- 多形性
-
- 根据句柄当时连接的实际类型,会相应地采取正确的操作
抽象的基础类和接口
- 关键字
-
- abstract
-
- 有人试图创建抽象类的一个对象,编译器就会阻止他们。这种工具可有效强制实行一种特殊的设计
- 描述一个尚未实现的方法——作为一个“根”使用
集合和继承器
- 集合
-
- 集、队列、散列表、树、堆栈等等
-
- 相应的读写功能
-
- 置入集合
-
- “推”(Push)、“添加”(Add)或其他类似名字的函数
- 从集合中取出
-
- 矢量(Vector)
-
- 那么也许能用索引运算符或函数
- “继承器”(Iterator)
-
- 最开始——枚举
- 单根结构
-
- 所有类最终是否都应从单独一个基础类继承——object
-
- 单根结构中的所有对象(比如所有 Java 对象)都可以保证拥有一些特定的功能
集合库与方便使用集合
- 下溯造型与模板/通用性
-
- 为使用这样的一个集合,只需添加指向它的对象句柄即可,以后可以通过句柄重新使用对象。但由于集合只能容纳 Object,所以在我们向集合里添加对象句柄时,它会上溯造型成 Object,这样便丢失了它的身份或者标识信息
-
- 下溯造型成一种更“特殊”的类型
- 参数化类型
清除时的困境:由谁负责清除?
-
- 每个对象都要求资源才能“生存”
- 垃圾收集器
-
- 垃圾收集器对效率及灵活性的影响
-
- 在堆栈中创建对象是为对象分配存储空间最有效的一种方式
- 在内存堆(Heap)中创建对象可能要付出昂贵得多的代价
- 实时程序
-
- 比如在一个程序的执行必须保持稳定、连贯的时候必须避免用它