第一章 对象入门
1.1抽象的进步
(1)所有东西都是对象。
(2)每个程序都是一大堆对象的组合。(通过消息的传递 一个对象可告诉另一个对象该做什么)
(3)每个对象都有自己的存储空间,可容纳其他对象。
(4)每个对象都有一种类型。(每个对象都是某个 类 的一个 实例 其中 类 Class 是 类型 Type 的同义词
一个类最重要的特征就是 能将什么消息发给它)
(5)同一类别的类的所有对象都能接收相同的消息。(圆和形状,一个圆完全能接收形状消息。)
接口:可以帮助程序员减少程序错误。(bug的出现)。
1.6多态
后期绑定:一条消息发给一个对象后实际调用的代码要等到运行时间才会确定 编译器能做的事情只是保证你调用的函数真的存在 并会对参数和返回值进行类型检查如果有误 就叫 类型错误 总之 它唯一不知道的就是最终执行的代码是什么。(OOP采用这种方法)
为真正实现这种后期绑定 Java 从绝对函数调用中借用了一点儿代码 这段代码利用对象中保存的信息 可计算出函数体所在的地址 具体过程还会在第 7 章详述 这样一来根据那段代码的内容 每个对象的行为都可能有所不同 将一条消息发给一个对象后 对象实际可正确判断出自己该采取的行动。
1.7 对象的创建和存在时间
C++ 对象需要的数据位于哪里,如何控制时间。C++认为效率第一位,允许程序员做出选择。
Java的对象的创建:在内存池中动态创建对象,拥有更大的灵活性。Java创建时,使用new 这个关键字。
C++若操作不当,造成内存泄露(出现一片谁也用不了的内存),令人头痛的问题。
Java采用垃圾收集器。防止内存泄露。
1.7.1集合:
Arraylist 数组列表
Sets 组合
Queues 队列
Hashtables散列表
Tree 树
Stacks 堆栈
Arraylist 与 linkedlist 的区别
数组索引快,在序列中部插入一个元素,则数组开销巨大。
1.7.2 单根结构
单根节点:
1.8违例控制
向下强转成为错误,会得到违例。
1.9多线程
共享的资源加锁,一个线程将资源锁定,完成后再释放这个锁。(强一致性,牺牲了性能)。
分布式采用弱一致性(最终一致性) 使用ThreadLocal 创建属性副本。
用到了synchronized关键字。
1.10持久性
Java可将对象存在磁盘上,以后如何时候可取用。
1.13极度编程
XP 无疑是极度编程最疯狂最激进的一种。
XP 准则最欣赏的两条:先写测试代码(正式编写程序之前先写出测试代码) 以及合伙编程。