1.1-抽象过程
面向对象程序设计方式:
1.万物皆对象
2.程序是对象的集合,他们通过发送消息来告知批次所要做的。
3.每个对象都有自己的由其他对象所构成的储存。
4.每个对象都有其类型
5.某一特定类型的所有对象都可以接受同样的消息。
对象具有状态、行为、标识。
1.2-每个对象都有一个接口
接口确定了对某一特定对象所能发出的请求。
每一个类都是一个数据类型。
1.3-每个对象都提供服务
为了提高对象的内聚性(这个有疑虑,目前来说看不懂)。对象最好仅提供一项任务。通过将逻辑上的任务细分,然后划分给多个对象,从而实现将服务细分(提高复用性)。
1.4-被隐藏的具体实现
访问控制:仅提供实现功能的接口,而不暴露其实现。
原因:
1.避免客户端程序员触及他们不应该触及到的。
2.允许类创建者,通过改变内部的工作方式实现功能而不影响到客户端程序员。
java提供三个关键字界定边界:public private protected,还有默认的访问权限。
1.5-复用具体实现
复用可以直接使用类的对象,也可以创建包含某个对象的新的类。
组合:任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。
如果组合是动态的称之为聚合。
1.6-继承
继承:基类与导出类拥有相同的数据和行为,但是导出类要比基类有更多的特性。
基类与导出类产生差异的两种方式:
1.直接在导出类中书写新方法(但是要在设计阶段考虑到是否基类中应该解决这个问题。)
2.overriding即覆盖(重写)
1.6.1-“是一个”与“像是一个”关系
还是涉及到差异的两种方式,要注意分清楚,何种情况下使用哪一种方式。
1.7-伴随多态的可互换对象
讲的就是java如何实现通过调用接口就能对其不同的具体的对象的行为执行。
原因:OOP程序设计语言采用了后期绑定的概念。即向对象发送消息时,被调用的代码直到运行时才能被确定。编译器仅确保被调用方法存在,且对参数返回值进行类型检查,但并不知道被执行的确切代码。
为了实现后期绑定,java使用一小段特殊的代码替代绝对地址调用(前期绑定)。这段代码使用对象中存储的信息来计算方法的地址,根据这段代码,每个对象都有其不同的行为表现,即当向一个对象发送消息时,该对象就知道该干什么。
java的动态绑定时默认的,不需要额外关键字实现多态。(c++需要virtual)
注:多态的应用多数表现在:向上转型的过程中。(接口作为方法的参数)
1.8-单根继承结构
在java中所有类都继承自单一的基类:Object
好处:所有对象都具备某些功能、所有对象更容易在堆上创建(不理解),参数传递得到简化、使垃圾回收期实现变得容易,由于对象都具有类型信息,使得确认对象类型方便,在系统级别操作显得重要(如异常处理)。
未完待续