读书人

thinking in java 读书笔记(4)

发布时间: 2012-08-28 12:37:01 作者: rapoo

thinking in java 读书笔记(四)
第五章
作者真的按照他书的,每章都提出问题,并且在后面围绕这个思考,否则java与面向对象本身又有什么意义(不能很好的解甚至优雅的解决一些问题)
引用
那个库的用户(客户程序员)必须能依赖自己使用的那一部分,并知道一旦新版本的库出台,自己不需要改写代码。而与此相反,库的创建者必须能自由地进行修改与改进,同时保
证客户程序员代码不会受到那些变动的影响

我们编写的软件模块也应该能达到这样的要求,虽然为了达到这个,jdk在后面的版本里面也发生了一些问题

不过着章是从小范围,类级别访问权限来讨论怎么控制,讲述的包的规则,类的几种访问权限方式,很基础的规则。

5.3 接口与实现
这里说到接口与实现,完全跟interface没关系,只是论述控制访问权限是提供操作的方式是一个接口,而不是那个接口。作者提到把提供的公共的东西写在前面,可以明确阅读到提供的接口,阅读到是实现细节(private),那么就可以停止不读了。这和像c++,public写一堆,protected写一堆。但如果要只读public就行了,貌似本身就是个难道。

总结:
写一个类不是那么随意,如果你只是想写一个类,那就算了,叫设计一个类可能更好听,更有感觉要做好它。类的访问权限,类的名字及包都是需要注意的,写的类是提供给别人用,完成一定的功能,并且能有很好的弹性,内部改变不影响使用者,而且自己也有更大的自由度来修改类的内部那些外部不可访问的成员与方法。
还是感觉e文和中文的转换问题,有些时候真的读着很不爽,这不是逼我在读一遍e文,这本书还是传说翻译的相当棒的,那些翻译的不棒的那读着岂不是很恼火。
再回溯到作者开始提到的那个问题,perfect。



第六章
作者提出问题:
Java 引人注目的一项特性是代码的重复使用或者再生。但最具革命意义的是,除代码的复制和修改以外,我们还能做多得多的其他事情


在衍生类构建器中,对基础类构建器的调用是必须做的第一件事情,编译器会强迫我们在衍生类构建器的主体中首先设置对基础类构建器的调用。这意味
着在它之前不能出现任何东西

那么没有提供默认的构造方法,编译器无法帮助我们在里面天剑super(),就需要我们显示的调用。
若想明确地清除什么,请制作自己的清除方法,而且不要依赖finalize()

讨论了合成还是继承的问题,effective java里面好像提到能用合成最好合成,如非必要的话,不然复杂的结构让人不好控制。
作者提出这样判断:
但只要记住经常问自己“我真的需要上溯造型吗”,对于合成还是继承的选
择就不应该是个太大的问题


final使用的详细分析:
数据--编译器 运行期
(1) 编译期常数,它永远不会改变
(2) 在运行期初始化的一个值,我们不希望它发生变化
编译器期间是常数的final static要大写

final方法
上锁避免继承覆盖它
增加效率,编译器可以直接优化它
私有方法不需要,编译器自动进行

final类
将类定义成final 后,结果只是禁止进行继承——没有更多的限制
以一个final 类中的所有方法都默认为final。因为此时再也无法覆盖它们。所
以与我们将一个方法明确声明为final 一样,编译器此时有相同的效率选择。
6.9初始化和类装载
设计到类,加载进来时候:
先初始父类的static数据,然后初始化自己的static
设计到实例化:
先对父类的成员初始化,再调用父类的构造方法,在子类成员初始化,调用子类对应的构造方法

读书人网 >其他相关

热点推荐