前言
抽象过程
"所有编程语言都提供抽象机制"。这句可以说是本节的精要,何为抽象?抽象机制的作用?带着类似的问题去学习还是很有必要的。
人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。
Smalltalk(java所基于的语言之一)的五个基本特性(总结:对象具有行为和动作状态)
1)万物皆是对象
2) 程序是对象的集合,它们通过发送消息来告知彼此所要做的
3) 每个对象都有自己的有其他对象所构成的存储
4) 每个对象都拥有其类型
5)某个特定类型的所有对象都可以接收到同样的消息
每个对象都有一个接口
Person |
Name() Speak() Height() |
每个对象都提供服务
在开发或理解一个程序设计时,最好的方法就是将对象相像为”服务提供者”。生活中也是每个事物(对象)都是服务者,例如椅子、拖把、电饭煲等等都在提供服务只是功能不同而已。
附带的好处就是,提高对象的内聚性。
被隐藏的具体实现
类创建者(创建新数据类型的程序员)需要向客户端程序员(试用数据类型的类消费者)暴露必须的部分而隐藏其他的部分。为了阻止所有的东西都赤裸裸的暴露出来,其中就引入了访问控制,关于访问权限的介绍本书在第六章有详尽的介绍。本节只对为何要进行具体实现的隐藏作了介绍。其目的是防止客户端程序员毁坏到类。下面的链接是关于访问权限中关键字的内部设定边界http://blog.csdn.net/the_flying_pig/article/details/73135553
复用具体实现
最简单的复用就是一个类中的成员包含另一个类的对象。
复用---组合、聚合(has-a)
组合:使用现有的类合成新的类。
聚合:组合动态发生。
继承
基类和子类产生差异的方法有两种
1) 在子类中添加新的方法
2) 覆盖(overriding)
伴随多态的可互换对象
public class Shape {
public void show(){
System.out.println("shape");
}
public static void doSomthing(Shape shape){
shape.show();
}
public static void main(String[] args) {
Circle circle = new Circle();
doSomthing(circle);
}
}
class Circle extends Shape{
public void show() {
System.out.println("circle");
}
}
本节在对多态介绍的时候,只是简单的提到了向上转型的概念即将导出类看做是它的基类的过程称为"向上转型",其实就是子类转父类。本书的第八章会对多态进行详尽的讲解,到时应该会重新讲解向上转型的含义吧。
单根继承的结构
所有的类都继承自单一的基类 Java --- <Object>,
该节列举了单根继承带来的优点:
1)所有对象都具有一个共同的接口,将提高生产率。
2)所有对象都具备某些功能,这使得在你的系统中可以在每个对象上执行某些基本操作。
3)所有对象都可以很容易的在堆上创建。
4)使得垃圾回收的实现更为简单。这个本人就不懂了。看目录本书在第五章会讲到垃圾回收机制。就我目前的了解java是动态内存分配的方式,当内存使用较大时,会调用垃圾回收机制,循环遍历内存中的对象,将没有引用的对象清除掉。
容器(集合)
对象的创建和生命期
对象置于:堆栈 或静态存储区域;这将存贮空间分配和释放置于优先考虑位置;在编程是需要确切的知道对象的数量、生命周期、类型;查找和释放不需要过多时间。
堆(heap)内存池:动态的创建对象; 相对而言,查找和释放需要更多的时间;Java采用了动态的内存分配方式。
垃圾回收机制:所有的对象都是单根继承 和 只能以一种方式创建对象<在堆上创建>这两个特性结合起来。
对象的生命期:
后面几个小节觉得没有必要再说,虽然很重要,但博主现在的水平也不知道说什么。
总结
对于设计良好的程序,通过阅读它就可以很容易地理解其代码。