一个JAVA小程序
时间:2008-06-19 20:57:35
来源:论坛整理 作者: 编辑:chinaitzhe
public class Cloneable1 implements Cloneable{ //实现Cloneable接口
String s;
int a;
public Cloneable1 (String s,int a){
this.s=s;
this.a=a;
}
public Object clone(){
try{ //x0
return super.clone();
}catch(CloneNoSupportedException cse){} //x1
return null;
}
public static void main(String[] args){
Cloneable1 ob1=new Cloneable1("abcd",10);
Cloneable1 ob2=(Cloneable1)ob1.clone(); //x2
}
}
帮忙解释下x0,x1,x2行的代码,谢谢
网友回复:clone()必须能够访问,所以必须将其设为public(公共的)。其次,作为clone()的初期行动,应调用clone()的基础类版本。这里调用的clone()是Object内部预先定义好的。之所以能调用它,是由于它具有protected(受到保护的)属性,所以能在衍生的类里访问。
Object.clone()会检查原先的对象有多大,再为新对象腾出足够多的内存,将所有二进制位从原来的对象复制到新对象。这叫作“按位复制”,而且按一般的想法,这个工作应该是由clone()方法来做的。但在Object.clone()正式开始操作前,首先会检查一个类是否Cloneable,即是否具有克隆能力——换言之,它是否实现了Cloneable接口。若未实现,Object.clone()就掷出一个CloneNotSupportedException违例,指出我们不能克隆它。因此,我们最好用一个try-catch块将对super.clone()的调用代码包围(或封装)起来,试图捕捉一个应当永不出现的违例(因为这里确实已实现了Cloneable接口)。
网友回复:study
网友回复:x0.x1行是专门的try ...catch...语句..你看书就直接懂了..好象是在有一章专门讲异常类的
至于x2行就是强行转换和函数调用的结合体吧
网友回复:x0.x1行是专门的try ...catch...语句..你看书就直接懂了..
x2 是定义个类对象Cloneable1 ob2=(Cloneable1)ob1.clone(); //x2 并调用Cloneable接口中的clone()方法;
网友回复:x2行中的ob1不是一个Cloneable1类型的对象吗?为什么还要再次转换成Cloneable1?是因为clone()方法是Object类型的原因吗?
关键字:一个,JAVA,程序,
上一篇:struts实现进度条
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面