java Object类

classexample{publicstaticvoidmain(String[]str){Aa=newA();intf=9;Ap=(A)a.clone();}}前面定... class example{
public static void main(String[] str){
A a=new A();
int f=9;
A p=(A)a.clone();
}
}
前面定义了A类,我用Object的clone方法不能创建p对象,为什么?
提示是:clone() 可以在 java.lang.Object 中访问 protected
哥哥啊 我需要解释 你的程序我有点不懂啊
展开
 我来答
tsorgy
推荐于2016-12-01 · TA获得超过979个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:566万
展开全部
要实现Cloneable接口的类才可以被克隆

比如你的A类
class A implements Cloneable {
public Object clone() {
try {
return super.clone();
} catch(CloneNotSupportedException cnse) {
return null;
}
}
}

/////////////////////////
// 下面这个是具体的例子
// ps:要实现克隆的话需要重写
// Object的clone()方法
/////////////////////////
public class Test{
public static void main(String args[]){
A a=new A();
a.i=5;
B b=new B();
b.i=5;
System.out.println(a.i);
System.out.println(b.i);

A a2=(A)a.clone();
B b2=(B)b.clone();
System.out.println(a2.i);
System.out.println(b2); //这句会打印出来null,也就意味着未实现Cloneable接口的类在调用clone()方法的时候会抛出CloneNotSupportedException(克隆不被支持)
}
}

class B {
public int i;
public Object clone() {
try {
return super.clone();
}catch (CloneNotSupportedException cnse) {
return null;
}
}
}
class A implements Cloneable { //与B类其他地方一模一样,只是实现了Cloneable接口
public int i;
public Object clone() {
try {
return super.clone();
} catch(CloneNotSupportedException cnse) {
return null;
}
}
}
suminglan
2008-06-01 · TA获得超过200个赞
知道答主
回答量:87
采纳率:0%
帮助的人:0
展开全部
如果你要让A实现克隆,那你必须先要保证A是可以被克隆的。也就是要让A类implements Cloneable。

但是这样还不够,还需要重写clone()方法,让A不仅可以克隆,还提供克隆的方法。就是:
public Object clone() {
try {
return super.clone();
} catch(CloneNotSupportedException cnse) {
return null;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式