暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
JAVA第4章 初始化和清除.pdf
280
36页
0次
2021-02-22
50墨值下载
4
初始化和清除
“随着计算机的进步,‘不安全’的程序设计已成为造成编程代价高昂的
魁祸首之一。
“初始化”“清除”是这些安全问题的其中两个。许多
C
程序的错误都是
由于程序员忘记初始化一个变量造成的。对于现成的库,若用户不知道如何初始
化库的一个组件,就往往会出现这一类的错误。清除是另一个特殊的问题,因为
用完一个元素后,由于不再关心,所以很容易把它忘记。这样一来,那个元素占
用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果。
C++
为我们引入了“构建器”的概念。这是一种特殊的方法,在一个对象创
建之后自动调用。
Java
也沿用了这个概念,但新增了自己的“垃圾收集器”,能
在资源不再需要的时候自动释放它们。本章将讨论初始化和清除的问题,以及
Java
如何提供它们的支持。
4.1
用构建器自动初始化
对于方法的创建,可将其想象成为自己写的每个类都调用一次
initialize()
这个名字提醒我们在使用对象之前,应首先进行这样的调用。但不幸的是,这也
意味着用户必须记住调用方法。
Java
中,由于提供了名为“构建器”的一种
特殊方法,所以类的设计者可担保每个对象都会得到正确的初始化。若某个类有
一个构建器,那么在创建对象时,
Java
会自动调用那个构建器——甚至在用户毫
不知觉的情况下。所以说这是可以担保的!
接着的一个问题是如何命名这个方法。存在两方面的问题。第一个是我们使
用的任何名字都可能与打算为某个类成员使用的名字冲突。第二是由于编译器的
责任是调用构建器,所以它必须知道要调用是哪个方法。
C++
采取的方案看来是
最简单的,且更有逻辑性,所以也在
Java
里得到了应用:构建器的名字与类名
相同。这样一来,可保证象这样的一个方法会在初始化期间自动调用。
下面是带有构建器的一个简单的类(若执行这个程序有问题,请参考第
3
的“赋值”小节)
148-149
页程序
//: c04:SimpleConstructor.java
// Demonstration of a simple constructor.
class Rock {
Rock() { // This is the constructor
System.out.println("Creating Rock");
}
}
public class SimpleConstructor {
public static void main(String[] args) {
for(int i = 0; i < 10; i++)
new Rock();
}
} ///:~
现在,一旦创建一个对象:
new Rock();
就会分配相应的存储空间,并调用构建器。这样可保证在我们经手之前,
象得到正确的初始化。
请注意所有方法首字母小写的编码规则并不适用于构建器。这是由于构建器
的名字必须与类名完全相同!
和其他任何方法一样,构建器也能使用自变量,以便我们指定对象的具体创
建方式。可非常方便地改动上述例子,以便构建器使用自己的自变量。如下所示:
149
页中程序
//: c04:SimpleConstructor2.java
// Constructors can have arguments.
class Rock2 {
Rock2(int i) {
System.out.println(
"Creating Rock number " + i);
}
}
of 36
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜