当前位置: 技术问答>java相关
请java 高手赐教,在线等待,高分!
来源: 互联网 发布时间:2015-08-02
本文导语: 在c++中可以用已经构造好的一个对象来构造一个新定义的对象 如 classname A(......); /*先构造对象A */ . . . classname B=A; /* 用对象A来初始化对象B */ 这就是用到所谓...
在c++中可以用已经构造好的一个对象来构造一个新定义的对象
如
classname A(......); /*先构造对象A */
.
.
.
classname B=A; /* 用对象A来初始化对象B */
这就是用到所谓的拷贝构造函数;
但是在 java中能这样构造一个新的对象吗?在 java 中也有拷贝构造函数吗?
谢谢赐教
如
classname A(......); /*先构造对象A */
.
.
.
classname B=A; /* 用对象A来初始化对象B */
这就是用到所谓的拷贝构造函数;
但是在 java中能这样构造一个新的对象吗?在 java 中也有拷贝构造函数吗?
谢谢赐教
|
在java中,如果你想拷贝一个和原来的对象完全一样的复制,那么一般是使用clone()来达到目的的,你所需要clone 的对象必须首先实现Cloneable接口开可以,但是有一点请注意,clone方法只能逐一拷贝对象的字段,如果你要拷贝的对象中有其他的对象,那么就需要重写clone方法,在方法中首先调用超类的clone,然后再将对象clone,如:
Class a implements Cloneable
{
private int a;
private int b;
.......
BBB b;//BBB是你定义的另一个类或者是系统里的某些类
}
在这种情况下,你想要拷贝该对象就必须重载clone()方法,如:
public Object clone()
{
try
{
a aClone=(a)super.clone();
aClone.b=(BBB)b.clone();
return aClone;
}
catch(ClonedNotSupportedException e).....
}
以上只是个人心得,希望有所帮助,谢谢
Class a implements Cloneable
{
private int a;
private int b;
.......
BBB b;//BBB是你定义的另一个类或者是系统里的某些类
}
在这种情况下,你想要拷贝该对象就必须重载clone()方法,如:
public Object clone()
{
try
{
a aClone=(a)super.clone();
aClone.b=(BBB)b.clone();
return aClone;
}
catch(ClonedNotSupportedException e).....
}
以上只是个人心得,希望有所帮助,谢谢
|
class A{
int value;
A(int value){
this.value=value;
}
A(A a){
this.value=a.Value;
}
}
this.value=a.Value;这句就不行,
从Object类继承clone()方法内部还是调用new来完成新对象的创建工作。
int value;
A(int value){
this.value=value;
}
A(A a){
this.value=a.Value;
}
}
this.value=a.Value;这句就不行,
从Object类继承clone()方法内部还是调用new来完成新对象的创建工作。