Java编程思想-第一章 1.5-1.8读书笔记
2017-03-21 22:07
393 查看
1.5 继承
1.继承的好处,代码复用。继承现有类,相当于copy了现有类的所有接口。衍生类可以接收发送给基类的所有消息。考虑什么时候会想到用继承:首先得有一个前提,就是目标类的部分接口已经在基类中定义了,然后我们考虑继承它,可能遇到的问题是基类接口不能满足目标类的需求,我们可以通过添加新的接口或者重写部分接口实现的方式扩展基类。在不扩展接口的情况下,重写方法实现了接口不变,但是有了不同的表现的效果。
1.6多形对象的互换使用
1.怎么样能体现一个类具有比较良好的扩展性呢,如果一个类的扩展性比较好,则我们只需要个性的重写部分基类的方法,在使用这个类的衍生类时可以忽略其具体实现的细节,可以像和这个类打交道一样。为觉得这样就是比较好的基类,它具有比较好的扩展性。写代码的时候,如果我们写的时候需要检查具体是基类的哪个衍生类,这样会很麻烦,因为这样需要每次添加一个衍生类就添加一行判断。
void doStuff(Shape s) {
s.erase();
// ...
s.draw(); }
2.动态绑定
编译器在编译的时候是不知道具体的类型的,比如上面的代码在编译时,我们不知道具体的Shape 但是在运行时,却可以正确的执行操作。将一条消息发给对象时,如果并不知道对方具体的类型是什么,但是采取的行动同样是正确的,这种情况叫做多形型。对面向对象语言来说,它们用以实现多形性的方法叫动态绑定。自己的理解:在我们在把具体类传递给 doStuff 需要进行向上转型,而向上转型的时候会保存实际对象的引用,在执行具体的方法的时候,会根据实际对象的引用去执行方法。
3.抽象的基础类和接口
什么时候我们需要一个抽象类,我们不希望创建这个类的对象,只希望通过继承它以便使用它的接口(通常我们用abstract来修饰这个类)。我们也可以使用abstract来修饰一个没有具体实现的方法,这个适合什么情况:我们希望继承这个类的衍生类都具体实现这个方法。 interface 将抽象类进一步抽象了,完全禁止了所有方法都实现。
1.7 对象的创建和存在时间
1.为什么面向对象语言里面会有集合会有继承器?因为我们只有在运行时才能知道具体我们创建了多少个对象,也不知道如何要保存这些对象。面向对象语言解决上述的问题的方式是:创建另外一个类型的对象,用于保存指向其他对象的句柄。比如说我们可以使用数组,Map。这种新的对象我们叫集合,在需要的时候,我们会填充这个集合,我们并不需要提前知道这个集合里会容下多少东西,让它自己负责好了。Java在标准库已经提供了集合,我们已经可以根据自己需要通过集,队列,散列表,树,堆栈等方式来进行管理。为什么会有继承器呢?我们通过数组,可以实现索引,或函数,单选定的函数是有局限性的,比如说我们想对集合中的一系列元素进行比较,或操作,而不是仅仅面向一个。我们就想到了使用继承器,它也是一种对象,负责选择集合里面的元素,并把它们提供给继承器的用户。作为一个类,它也提供了一级抽象。利用这一级抽象,可将集合的细节和用于访问那个集合的代码隔离。通过使用继承器,集合被抽象成简单的序列。继承器允许我们遍历那个序列,同时毋需关心基础结构是什么,不管它是一个矢量,一个链接列表,一个堆栈,还是其他什么东西。
2.单根结构:通俗点理解就是所有类都继承自Object类,这样做的有点:保证所有的对象都有通用的接口,最终他们是属于同种类型的。Java 这样设计的原因是什么:我们可以轻松的实现垃圾收集器,垃圾收集器可以轻松的给每个对象发送消息。如果没有这种单根结构,而是通过句柄,那么为了实现垃圾回收会有很多障碍。单根结构,简化了参数和消息的传递。
3.集合库和方便的使用集合。下遡造型与模版/通用型
Java提供的通用类型是Object类,单继承结构意味着所有对象都是Object对象,所以一个容纳Object的容器实际上可以容纳所有类系的对象,方便我们使用。上溯和下遡分别的含义是什么:我们在向集合中添加句柄的时候,它会先上溯成Object对象,这样丢失了它的身份和识别信息。再次使用到它的时候,我们拿到的是Object的句柄,而非指向我们早先置入的对象的句柄。所以我们通过“造型”,这次不是上溯,而是下遡。上溯是为了通用,而下遡是为了造型成更加具体更加特殊的类型。
我们可以采用参数化类型来确定自己的集合所要容纳的对象类型,这样可以消除下遡造型的潜在风险。
1.8解决错误
1.违例控制将错误控制放置到程序设计语言中,甚至是操作系统中,这里的违例是一个特殊的对象,它可以从产生错误的地方扔或者抛出去,也可以被特定的违例控制器捕获不会干扰正常代码的执行,这样编码更加简单,不用经常强制检查代码,利用违例控制能可靠的从糟糕的环境中恢复。这样的程序运行更加可靠
1.继承的好处,代码复用。继承现有类,相当于copy了现有类的所有接口。衍生类可以接收发送给基类的所有消息。考虑什么时候会想到用继承:首先得有一个前提,就是目标类的部分接口已经在基类中定义了,然后我们考虑继承它,可能遇到的问题是基类接口不能满足目标类的需求,我们可以通过添加新的接口或者重写部分接口实现的方式扩展基类。在不扩展接口的情况下,重写方法实现了接口不变,但是有了不同的表现的效果。
1.6多形对象的互换使用
1.怎么样能体现一个类具有比较良好的扩展性呢,如果一个类的扩展性比较好,则我们只需要个性的重写部分基类的方法,在使用这个类的衍生类时可以忽略其具体实现的细节,可以像和这个类打交道一样。为觉得这样就是比较好的基类,它具有比较好的扩展性。写代码的时候,如果我们写的时候需要检查具体是基类的哪个衍生类,这样会很麻烦,因为这样需要每次添加一个衍生类就添加一行判断。
void doStuff(Shape s) {
s.erase();
// ...
s.draw(); }
2.动态绑定
编译器在编译的时候是不知道具体的类型的,比如上面的代码在编译时,我们不知道具体的Shape 但是在运行时,却可以正确的执行操作。将一条消息发给对象时,如果并不知道对方具体的类型是什么,但是采取的行动同样是正确的,这种情况叫做多形型。对面向对象语言来说,它们用以实现多形性的方法叫动态绑定。自己的理解:在我们在把具体类传递给 doStuff 需要进行向上转型,而向上转型的时候会保存实际对象的引用,在执行具体的方法的时候,会根据实际对象的引用去执行方法。
3.抽象的基础类和接口
什么时候我们需要一个抽象类,我们不希望创建这个类的对象,只希望通过继承它以便使用它的接口(通常我们用abstract来修饰这个类)。我们也可以使用abstract来修饰一个没有具体实现的方法,这个适合什么情况:我们希望继承这个类的衍生类都具体实现这个方法。 interface 将抽象类进一步抽象了,完全禁止了所有方法都实现。
1.7 对象的创建和存在时间
1.为什么面向对象语言里面会有集合会有继承器?因为我们只有在运行时才能知道具体我们创建了多少个对象,也不知道如何要保存这些对象。面向对象语言解决上述的问题的方式是:创建另外一个类型的对象,用于保存指向其他对象的句柄。比如说我们可以使用数组,Map。这种新的对象我们叫集合,在需要的时候,我们会填充这个集合,我们并不需要提前知道这个集合里会容下多少东西,让它自己负责好了。Java在标准库已经提供了集合,我们已经可以根据自己需要通过集,队列,散列表,树,堆栈等方式来进行管理。为什么会有继承器呢?我们通过数组,可以实现索引,或函数,单选定的函数是有局限性的,比如说我们想对集合中的一系列元素进行比较,或操作,而不是仅仅面向一个。我们就想到了使用继承器,它也是一种对象,负责选择集合里面的元素,并把它们提供给继承器的用户。作为一个类,它也提供了一级抽象。利用这一级抽象,可将集合的细节和用于访问那个集合的代码隔离。通过使用继承器,集合被抽象成简单的序列。继承器允许我们遍历那个序列,同时毋需关心基础结构是什么,不管它是一个矢量,一个链接列表,一个堆栈,还是其他什么东西。
2.单根结构:通俗点理解就是所有类都继承自Object类,这样做的有点:保证所有的对象都有通用的接口,最终他们是属于同种类型的。Java 这样设计的原因是什么:我们可以轻松的实现垃圾收集器,垃圾收集器可以轻松的给每个对象发送消息。如果没有这种单根结构,而是通过句柄,那么为了实现垃圾回收会有很多障碍。单根结构,简化了参数和消息的传递。
3.集合库和方便的使用集合。下遡造型与模版/通用型
Java提供的通用类型是Object类,单继承结构意味着所有对象都是Object对象,所以一个容纳Object的容器实际上可以容纳所有类系的对象,方便我们使用。上溯和下遡分别的含义是什么:我们在向集合中添加句柄的时候,它会先上溯成Object对象,这样丢失了它的身份和识别信息。再次使用到它的时候,我们拿到的是Object的句柄,而非指向我们早先置入的对象的句柄。所以我们通过“造型”,这次不是上溯,而是下遡。上溯是为了通用,而下遡是为了造型成更加具体更加特殊的类型。
我们可以采用参数化类型来确定自己的集合所要容纳的对象类型,这样可以消除下遡造型的潜在风险。
1.8解决错误
1.违例控制将错误控制放置到程序设计语言中,甚至是操作系统中,这里的违例是一个特殊的对象,它可以从产生错误的地方扔或者抛出去,也可以被特定的违例控制器捕获不会干扰正常代码的执行,这样编码更加简单,不用经常强制检查代码,利用违例控制能可靠的从糟糕的环境中恢复。这样的程序运行更加可靠
相关文章推荐
- java编程思想-读书笔记(6-10章)
- [JAVA]java编程思想-第一章-对象入门
- Java编程思想 第一章 对象导论
- 读书笔记 JAVA编程思想 第13章 字符串
- Java编程思想 第七章读书笔记
- java编程思想4-读书笔记-第11章
- 读书笔记 之 java编程思想3
- Java 编程思想 - 读书笔记
- java编程思想阅读心得——第一章对象导论
- java编程思想笔记(第一章)
- java 编程思想读书笔记(5)--java异常
- 读书笔记 之java编程思想
- JAVA编程思想-第一章 对象导论
- Java编程思想笔记——第一章 对象导论
- Java 编程思想第一章小结!
- 枚举类型 Java编程思想 读书笔记
- Java 编程思想读书笔记(一)---多态
- 《Java 编程思想》对象导论第一章书摘与评论
- Java编程思想 第八章读书笔记-多态
- Java编程思想 第二章读书笔记