简述java语言的对象克隆特性.doc

简述java语言的对象克隆特性.doc

ID:18900707

大小:97.00 KB

页数:21页

时间:2018-09-20

简述java语言的对象克隆特性.doc_第1页
简述java语言的对象克隆特性.doc_第2页
简述java语言的对象克隆特性.doc_第3页
简述java语言的对象克隆特性.doc_第4页
简述java语言的对象克隆特性.doc_第5页
资源描述:

《简述java语言的对象克隆特性.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、简述Java语言的对象克隆特性Java认证考试:简述Java语言的对象克隆特性  本文通过介绍java.lang.Object#clone()方法来说明Java语言的对象克隆特性。java.lang.Object#clone()方法由java.lang.Object加以实现,主要对对象本身加以克隆。  在Java中传值及引伸深度克隆的思考中,我们讲过引申到克隆技术Java中的所有对象都是Object类的子类。我们知道,Java是纯面向对象的程序设计语言。Java里,所有的类的顶级父类都是java.lang.Object类,也就是说,

2、如果一个类没有显示申明继承关系,它的父类默认就是java.lang.Object。有一个很简单的方法可以证明这一点,我们写一个Test类,如下:1.publicclassTest{2.publicvoidsomeMethod(){3.super.clone();4.}5.}6.里面调用了super.clone(),编译时并不报错。其实clone()方法为java.lang.Object类提供的一个protected型方法。对象克隆本文通过介绍java.lang.Object#clone()方法来说明Java语言的对象克隆特性。jav

3、a.lang.Object#clone()方法由java.lang.Object加以实现,主要对对象本身加以克隆。首先我们看看下面的例子:7.publicclassTestClone{8.publicstaticvoidmain(String[]args){9.MyClonemyClone1=newMyClone(“clone1”);10.11.MyClonemyClone2=(MyClone)myClone1.clone();12.13.if(myClone2!=null){14.System.out.println(myClon

4、e2.getName());15.System.out.println(“myClone2equalsmyClone1:”+myClone2.equals(myClone1));16.}else{17.System.out.println(“CloneNotSupported”);18.}19.}20.}21.classMyClone{22.privateStringname;23.publicMyClone(Stringname){24.this.name=name;25.}26.27.publicStringgetName(){

5、28.returnname;29.}30.publicvoidsetName(Stringname){31.this.name=name;32.}33.34.publicObjectclone(){35.try{36.returnsuper.clone();37.}catch(CloneNotSupportedExceptione){38.returnnull;39.}40.}41.编译执行TestClone,打印出:42.C:clone》javac*.java43.C:clone》javaTestClone44.CloneNo

6、tSupported45.C:clone》46.说明MyClone#clone()方法调用super.clone()时抛出了CloneNotSupportedException异常,不支持克隆。为什么父类java.lang.Object里提供了clone()方法,却不能调用呢?原来,Java语言虽然提供了这个方法,但考虑到安全问题,一方面将clone()访问级别设置为protected型,以限制外部类访问;另一方面,强制需要提供clone功能的子类实现java.lang.Cloneable接口,在运行期,JVM会检查调用clone

7、()方法的类,如果该类未实现java.lang.Cloneable接口,则抛出CloneNotSupportedException异常。java.lang.Cloneable接口是一个空的接口,没有申明任何属性与方法。该接口只是告诉JVM,该接口的实现类需要开放“克隆”功能。我们再将MyClone类稍作改变,让其实现Cloneable接口:47.classMyCloneimplementsCloneable{48.。。.//其余不做改变49.}50.51.编译执行TestClone,打印出:52.53.C:clone》javac*

8、.java54.C:clone》javaTestClone55.clone156.myClone2equalsmyClone1:false57.C:clone》58.根据结果,我们可以发现:1,myClone1.clone()克隆

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。