的类族之间可以进行类型转换;望文,“aທuthor-informat;
应。但不能把它转换成
其中ณ,“橡树”可转型为“树”,例如,
freshso,
第四章初始化与清除
随,并且只用一行代码就可以做更多的事。
中ณ存储的信息来计算方法体的地址这个ฐ过程将在第7๕章中详述。这样,根据这一小段代
得到我真正想要的。感谢prenticehall的paulpetraliaທ不断ษ地为ฦ我我所需要的一切,反之亦然。应该是你的姓名。也可以包括电å子邮ุ件
问题,“不安全”的编程方式已逐渐成为编程代价高昂的主因之ใ一。
“初始化initiaທlization”和“清除9up”正是涉及安全的两个问题。特别是在使用程序库时。许多c程序的
错误都源于程序员,如果用户不知道如何初始化库
的构件,或者是用户必须初始化的其它东西,清理也。更是如此,当你使用
完一个元素า时,它对你也就不会有什么影响了,所以你很容易把它忘记。这样一来,这个元
素占用的资源就会一直得不到释放,等待你的将是资源尤其是内存用尽的后果。
9๗structor”的概念。这是一个在创建对象时被自动调用的特殊方แ法。
java中也采用了构造器,并额外了“垃圾回收器”。对于不再使用的内存资源,垃圾回
收器能ม自动将其释放。本章将讨论初始化和清理的相关问题,以及java对它们的支持。
以构造器确保初始化
可以假想为编写的每个类都定义一个initialize方แ法。此名称提醒你在使用其对象之前,应
先调用initialize。然而,这同时意味着用户必须记得自己去调用此方法。在jaທva中,通
过“构造器”这种特殊方法,类的设计者可确保每个ฐ对象都会得到เ初始化。当对象被创น
建时,如果其类具有构造器,java就会在用户有能力操作对象之前自动调用相应的构造器,
所以初始化动作得以确保。
接下来的问题就是如何命名这个方แ法。有两个ฐ问题:第一,你取的任何名字都可能ม与类的某
个成员名称相冲突;第二,调用构造器是编译器的责任,所以必须让编译器知道应该调用哪
个方法。c+ใ+语言中采用的方แ案看来最简单且更符合逻辑,所以在java中也得到了应用:
即构造器采用与类相同的名称。考虑到在初ม始化期间要自动调用构造器,这种作法就顺理成
章了。
以下就是一个带有构造器的简单类:
:9๗structorjava
de摸nstraທtionofasimple9๗strucນtor
importucນeecນkelsimpletest;
classrocນk{
rock{thisisthe9structor
syste摸utprintln"9grock";
}
}
publi9structor{
stati9๗e9test;
pubຘli9๗stringargs{
forinti=0;๙i10;i++
ne9rocນk;
摸nitorexpe9g{
"9grocນk"ิ,ไ
"9grock",
"9๗grock",
"9grock",ไ
"9grocນk",
"9grock",
"9grocນk",
"ิ9grock",ไ
"ิ9grock"ิ,
"9grocນk"
};
}
}:๘~
现在,在创建对象时:
ne9rock;๙
将会为ฦ对象分配存储空间,并调用相应的构造器。这就确保了在你能操作对象之前,它已๐经
被恰当地初始化了。