对象导论
1抽象过程
对象具有状态、行为和标识。每一个对象都可以拥有内部数据(例如:轮子的直径,宽度)、方法(它们产生行为),并且每一个对象都可以惟一地与其他对象区分开来,就是指每一个对象在内存中都有一个唯一的地址。
2 每个对象都有一个接口
Java怎么样获得有用的对象?
对对象请求,是对象完成各种任务,每个对象都只能满足某些请求,这些请求由对象的接口定义。
接口确定了对某一特定对象所能发出的请求。但是,在程序中必须有满足这些请求的代码,这些代码与隐藏的数据一起构成了实现。
向某个对象产生请求,对象便知道此消息的目的,然后执行对应的程序代码。
3 每个对象都提供服务
如果你是用Java去解决需求,比如订票,那么你的目标就是去创建(最好是在现有代码库中寻找)能够提供理想服务来解决问题的一系列对象。
下一步:如果我将问题从表象中抽取出来,那么什么样的对象能解决我的问题呢?
人们在设计对象时,将过多的功能塞在一个对象中。
在良好的面向对象设计中,每个对象都可以很好的去完成一项任务,但是它并不试图做更多的事。
4 被隐藏的具体实现
开发人员按角色分为类创建者和客户端程序猿,想大多数都是程序猿收集各种用来实现快速开发的类(各种jar)。
隐藏的部分通常代表对象内部脆弱的部分,可能会被使用者毁坏,隐藏起来可以减少bug,正是在此基础上Java采取了访问控制。
原因一:让客户端程序猿无法触及不应该触及的部分,这些部分对数据类型的内部操作是必需的,但并不是所有用户解决特定问题所需的接口的一部分。
原因二:允许库设计者可以改变内部的工作方式而不用担心会影响到客户端程序猿。
因此带来了三个关键字:public、private、protected
public:任何人都是可用的
private:只有类型创建者和内部方法可以
protected:与private关键字相当,差别仅在于继承的类可以访问protected成员
缺省型可以访问同一个包内的其他类成员。
5 继承和多态
一个基类(父类)来表示系统中某些对象的核心概念,从基类型中导出的其它类型,来表示此核心可以被实现的各种不同方式。
子类可以覆盖基类的方法,创建该方法的新定义。
子类看作基类视为向上转型,这就是多态的体现例如:List list = new ArrayList();
6 单根继承结构
终极基类Object,这样设计可以是所有对象都具有某些功能,比如toString(),你可以在每个对象上执行某些基本操作,所有对象都可以在堆上创建,参数传递也得到极大简化,并且使垃圾回收器的实现变得容易。
7 容器
List、Map、Set以及队列、树等,不同容器提供了不同的接口和外部行为,不同的容器对于某些操作具有不同的效率,如:
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始
8 参数化类型
方便于从容器取出对象引用时,还要记住这些对象究竟是什么类型,才能向下转型。ArrayList<String>
9 对象的创建和生命周期
通过new关键字创建对象,垃圾回收机制可以发现对象何时不再被使用,从而销毁,避免了内存泄漏。
10 异常机制
通异常提供了一种从错误情况中进行可靠恢复的途径,你可以进行校正,并恢复程序的执行,这都有利于编写出更健壮的代码。
Java的异常处理机制深入:http://blog.csdn.net/hguisu/article/details/6155636