- java中有自动的垃圾回收器,不需要人工回收内存或者资源,所以java不支持析构函数。
- finalize方法可以添加进任何一个类,可以用来在回收短缺的资源,但作者并不提倡使用这个方法,因为程序员无法确定这个方法将在哪一时刻被调用,只知道它将在垃圾回收器前调用。
- System.runFinalizersOnExits 这个方法能够确保finalizer方法在java关闭前调用,但作者认为这样并不安全,有一个替代的方法:Runtime.addShutdownHook方法,具体在白皮书后面介绍。
- java中的import与c/c++中的#include粗看起来可能效果功能相同,但是却存在本质区别——C/C++编译器并不具备查看文件的功能,但是JAVA编译具备这种功能,所以这里有一个因果:所以C/C++需要使用#include来将声明包含进来,然而java使用import只是将包的路径包含,然后有编译器去查看文件。这里又有一个因果:所以C/C++没有#include就不行,但是在java中如果要声明一个变量,此时如果把包的路径完全给出并且由此包中的类名作为类型名的话就可以不使用Import包含这个包,程序不会出错。作者指出相对于C/C++中的#include,它们的namespce和using两个保留字更加相似与java中的package和import;
- 关于java中的静态导入问题,作者态度暧昧,详述于P136 白皮书。
- 将类放入包中,需要利用到package+包名,并将这条语句放置于源文件的开头,否则这个类就会被放入默认包,详述于白皮书P137
- 对于没有public和private修饰的类、数据域、方法等,表示可以被本包中的所有方法访问。所以一定要注意private不能遗忘,否则会破坏类的封装性。关于包密封机制详述于——白皮书P140,可以禁止向包中添加类。
- 有关路径问题详述于——白皮书p141,目前暂时略过
- 关于注释问题 详述于——白皮书p144,目前十分粗略的浏览。
- java类的设计时需要注意:a.一定要保证数据的私有 b.一定要将数据初始化 c.不要使用过多的基本类型. d.类的职责不应过多 e.命名
- 此处之后为第五章内容
- java中继承的关键字是extands ——A extands B A继承于B,不同于C++中的 :,而且java中的所有继承都是共有继承。超类——相当于超集的类(B) ,子类——相当于子集的类(A)。
- 子类中的方法不能直接访问超类中的私有数据域,需要通过超类中的访问器(接口函数)调用,如果子类中的方法与超类中的方法命名冲突,会覆盖超类方法,此时如果想使用超类方法可以利用super.方法名调用,不同于C++中的 :: 。虽然可以覆盖,但并不能删除超类中的任何元素(方法,数据域)。
- java子类的构造器中需要调用super();作为调用超类的构造器,用于将子类中在超类中声明的数据域进行初始化,并且,super()必须放在第一条语句位置。这里作者提到java中this和super的方法使用有些相似,例如this有两个功能1:表示隐藏参数2:构造器转移 super也有两个功能1:使用超类的同名方法 2:调用超类构造器。
时间: 2024-10-24 06:46:32