
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
哥哥啊 我需要解释 你的程序我有点不懂啊 展开
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
哥哥啊 我需要解释 你的程序我有点不懂啊 展开
展开全部
要实现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;
}
}
}
比如你的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;
}
}
}
展开全部
如果你要让A实现克隆,那你必须先要保证A是可以被克隆的。也就是要让A类implements Cloneable。
但是这样还不够,还需要重写clone()方法,让A不仅可以克隆,还提供克隆的方法。就是:
public Object clone() {
try {
return super.clone();
} catch(CloneNotSupportedException cnse) {
return null;
}
}
但是这样还不够,还需要重写clone()方法,让A不仅可以克隆,还提供克隆的方法。就是:
public Object clone() {
try {
return super.clone();
} catch(CloneNotSupportedException cnse) {
return null;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询