第7章

你可以使用多个标签,以便列出所有作者,但是它们必须连续放置。全部作者信息会合并到

你可以使用多个标签,以便列ต出所有作者,但是它们必须连续放置。全部作者信息会合并到

在某些语言中,你必须明确地声明希๶望某个方法具备后期绑定属性所带来的灵活性c++是

在某些语言中,你必须明确地声明希望某个方法具备后期绑定属性所带来的灵活性c++是

但是,掌握好java语言并不是一件可以轻松完成的任务,如何真正掌握java语言,从而

但是,掌握好java语言并不是一件可以轻松完成的任务,如何真正掌握java语言,从而

freshsources19๗95006๔aທhtm此文档的最后部分。

第四章初始化与清除

随着计算机革命的展,“不安全”的编程方แ式已逐渐成为编程代价高昂的主因之ใ一。

“初ม始化initialization”和“清除9up”正是涉及安全的两个问题๤。许多c程序的

错误都源于程序员忘记初始化变量。特别ี是在使用程序库时,如果用户不知道如何初始化库

的构件,或者是用户必须初始化的其它东西,更是如此。清理也是个特殊的问题,当你使用

完一个元素时,它对你也就不会有什么影响了,所以你很容易把它忘记。这样一来,这个元

素占用的资源就会一直得不到释放,等待你的将是资源尤其是内存用尽的后果。

9structor”的概念。这是一个在创น建对象时被自动调用的特殊方法。

java中也采用了构造器,并额外了“垃圾回收器”。对于不再使用的内存资源,垃圾回

收器能自动将其释放。本章将讨论初始化和清理的相关问题,以及jaທva对它们的支持。

以构造器确保初ม始化

可以假想为编写的每个类都定义แ一个initialize方法。此名称提醒你在使用其对象之前,应

先调用initiaທlize。然而,这同时意味着用户必须ี记得自己去调用此方แ法。在java中,通

过“构造器”这种特殊方法,类的设计者可确保每个对象都会得到初始化。当对象被创น

建时,如果其类具有构造器,java就会在用户有能力操作对象之前自动调用相应的构造器,

所以初始化动作得以确保。

接下来的问题就是如何命名这个方法。有两个ฐ问题๤:第一,你取的任何名字都可能与类的某

个ฐ成员名称相冲突;第二,调用构造器是编译器的责任,所以必须让编译器知道应该调用哪

个ฐ方法。c++ใ语言中采用的方案看来最简单且更符合逻辑,所以在java中也๣得到了应用:

即构造器采用与类相同的名称。考虑到เ在初始化期间要自动调用构造器,这种作法就顺理成

章了。

以下就是一个ฐ带有构造器的简单类:

:9structorjaທva

de摸nstraທtionofasimple9structor

importuceeckelsimpletest;

claທssrock{

rock{thisisthe9๗strucນtor

syste摸utprintln"9๗grock";

}

}

pubຘli9structor{

stati9e9test;๙

publi9stringaທrgs{

forinti=0่;i10;i++ใ

ne9rock;๙

摸nitorexpe9g{

"ิ9grock"ิ,

"9๗grock",

"ิ9grock",

"ิ9grock",

"9grock"ิ,ไ

"9grock"ิ,

"ิ9grock",

"9๗grocນk"ิ,

"9grock",ไ

"9grock"

};

}

}:~

现在,在创建对象时:

ne9rock;

将会为对象分配存储空间,并调用相应的构造器。这就确保了在你能操作对象之ใ前,它已经

被恰当地初ม始化了。