Thinking In Java读书笔记 - 对象导论
什么是对象
对象具有状态,行为和标识.意味着每一个对象可以拥有内部数据(这些数据给出了该对象的状态)和方法(它们产生行为),并且每一个对象都可以唯一地与其他对象进行区分开来.例如每一个对象在计算机内存中都有唯一的内存地址.
每个对象都提供服务
将对象理解为"服务提供者",每个对象都有特定的服务,通过组合不同的服务,解决不同的问题,同时这样理解有助于提高对象的内聚性
OOD中的单一职责原则,一个类只负责一个功能领域中的相应职责.
封装(隐藏具体实现)
通过隐藏具体的实现,只向调用方暴露有用的方法,也可以称为访问控制.
个人理解:就是代码封装,通过private,public等修饰符,将不必要的方法实现进行隐藏,只对外暴露可用的方法.
继承
由于继承在OOD中非常重要,被高度强调,但是过度使用继承会导致过分复杂的设计,通常情况下,在建立新类时,应该优先考虑使用组合.
导出类与基类具有相同的类型
多态
通过控制泛化类型,不需要知道具体对象,就能调用对象的方法.在面向对象编程的编译期仲,采用后期绑定(动态绑定)的方式,被调用的代码直到运行时才能确定,编译期能够确保方法确实存在,并且对调用参数和返回值进行类型检查,但是不知道将被执行的确切代码.
容器
Java中提供了很多不同的容器,例如List,Map,Set,以及队列,树,堆栈等更多的组件.不同类型也由于具体实现不同,从而能够应对更多的使用场景.
ArrayList和LinkedList,由于底层实现的数据结构不同,在数据访问速度和数据插入删除的效率上,就会存在差异.同时也可以结合多态使用不同的容器类型.
List<String> list = new ArrayList<>();
//or
List<String> list = new LinkedList<>();
泛型
编译期对类型进行检查.从JDK5开始,所有的容器都基于泛型进行了修改重构.
对象的创建和生命周期
由虚拟机自行管理,通过动态分配内存的方式进行内存管理,使用垃圾回收器将对象进行销毁回收.
Java的异常机制
异常处理是程序正常执行路径并行,在错误发生时执行的另一条路径.不会干扰到正常的执行代码.同时异常不能被忽略,可以确保异常必定会在某处得到处理.
同时异常提供了一种从错误状况下进行可靠恢复的途径.可以在错误发生进行校正,并恢复程序的执行.
并发编程
主要难点在于如何解决共享资源的问题
多线程同时操作同一个数据,如何保证数据的有效性
小结
Thinking In Java更多的是讲解Java的思想,如何用Java更有效的编写可靠的程序,但是由于Java涉及的范围太广,所以书中主要是对JavaSE进行编写,至于Java的Web开发,就需要参考其他文章和书籍.