Java编程思想读书笔记——对象导论

来源:互联网 发布:打条码软件 编辑:程序博客网 时间:2024/05/19 06:17

第一章 对象导论

本章主要介绍的是面向对象编程(Object-oriented Programming, OOP)的基本概念。

1.1 抽象过程
面向过程:在解决问题时基于计算机结构考虑;
面向对象:在解决问题时针对待解决问题建模。
对象(Object):问题空间中的元素及其在解空间中的表示。
面向对象的实质是通过添加新类型的对象使自身适用于某个特定的问题。

面向对象程序设计的基本特性:
* 万物皆对象
* 程序是对象的集合,它们通过发送消息来告知彼此所要做的(即调用对象的方法)
* 每个对象都有自己的由其他对象所构成的存储(即通过创建包含现有对象的方式来创建新的对象)
* 每一个对象都有其类型(每个对象(object)都是某个类(class)的一个实例(instance))
* 某一特定类型的所用对象都能接收同样的消息(即同属一类的对象,都能调用该类的方法)

简单总结:对象具有状态(内部数据)、行为(方法)和标识(内存地址)

1.2 每个对象都有一个接口

1.3 每个对象都提供服务

1.4 被隐藏的具体实现

程序开发人员包括类创建者和客户端程序员。类创建者的目标是创建类,并向客户端程序员暴露必需的部分而隐藏其他部分。客户端程序员的目标在于收集各种用来快速开发的类。访问控制存在的原因,首先是让客户端程序员不能触碰到他们不该触碰的部分,其次在于允许类库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员的使用。Java的访问控制权限(access specifier):public、private、protected以及默认访问权限(包访问权限)。

1.5 复用具体实现
复用的方式:
* 直接使用该类对象;
* 将该类对象内置于一个新的类当中,即组合方式(composition),若组合动态发生,则称为聚合(aggregation)。

1.6 继承
父类 子类
父类与子类产生差异:在子类中添加新方法;在子类中覆盖继承的方法。
is-a与is-like-a关系:
is-a:子类对象是一个父类
is-like-a:当子类除了父类方法外,还有另外的方法。

1.7 伴随多态的可互换对象
前期绑定:编译器产生对一个具体函数名字的调用,而运行时将该调用解析到将要被执行的代码的绝对地址。
后期绑定:编译器确保调用方法的存在,并对调用参数和返回值执行类型检查,但是并不知道将被执行的确切代码。
向上转型(upcasting):将子类看作是父类的过程。

1.8 单根继承结构
java采取单继承,保证所有对象都具备某些功能。

1.9 容器
创建一种新的类型,该类型是持有其他对象的引用。Java SE5之前,默认是Object类型。Java SE5之后引入了泛型的概念,即容器知道自己所保存的类型。

1.10 对象的创建和生命期
两种方式:
1. 将对象置于堆栈或静态存储区中,在编写程序时就确定对象的存储空间和生命周期,以追求最大的执行速度。
2. 在被称为堆(heap)的内存池中动态创建对象,这种方式是直到运行时才知道需要多少对象,它们的生命周期如何,以及它们的具体类型是什么。
Java采用动态内存分配方式,使用new关键字创建对象,使用垃圾回收机制销毁对象。

1.11 异常处理

1.12 并发编程

1.13 Java与Internet