初学克隆,不懂。
下面代码、、
package 克隆矩形;/**
*
* @author Administrator
*/
public class Rectangular {
int x1;
int x2;
int y1;
int y2;
int Sum;
Rectangular(int x1,int x2,int y1,int y2)
{
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
@Override
public Object clone()
{
Object o=null;
try
{
o=(Rectangular)super.clone();
}
catch(CloneNotSupportedException e)
{
System.out.println(e.getMessage());
}
return o;
}
public int Sum()
{
Sum=((x2-x1)+(y2-y1))*2;
return Sum;
}
}
package 克隆矩形;/**
*
* @author Administrator
*/
public class test { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
Rectangular r1 = new Rectangular(3,13,5,17);
Rectangular r2 = (Rectangular)r1.clone();
r2.x1=1; //到这里开始出错。
r2.x2=2;
r2.y1=7;
r2.y2=8;
System.out.println(r1.Sum());
System.out.println(r2.Sum());
}
}
我不知道什么原因,希望能解答一下,谢谢了
下面代码、、
package 克隆矩形;/**
*
* @author Administrator
*/
public class Rectangular {
int x1;
int x2;
int y1;
int y2;
int Sum;
Rectangular(int x1,int x2,int y1,int y2)
{
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
@Override
public Object clone()
{
Object o=null;
try
{
o=(Rectangular)super.clone();
}
catch(CloneNotSupportedException e)
{
System.out.println(e.getMessage());
}
return o;
}
public int Sum()
{
Sum=((x2-x1)+(y2-y1))*2;
return Sum;
}
}
package 克隆矩形;/**
*
* @author Administrator
*/
public class test { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
Rectangular r1 = new Rectangular(3,13,5,17);
Rectangular r2 = (Rectangular)r1.clone();
r2.x1=1; //到这里开始出错。
r2.x2=2;
r2.y1=7;
r2.y2=8;
System.out.println(r1.Sum());
System.out.println(r2.Sum());
}
}
我不知道什么原因,希望能解答一下,谢谢了
即可
/**
*
* @author Administrator
*/
public class Rectangular implements Cloneable{
int x1;
int x2;
int y1;
int y2;
int Sum;
public Rectangular(int x1,int x2,int y1,int y2)
{
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
@Override
public Object clone()
{
Object o=null;
try
{
o=super.clone();
}
catch(CloneNotSupportedException e)
{
// System.out.println(e.getMessage());
e.printStackTrace();
}
return o;
} public int Sum()
{
Sum=((x2-x1)+(y2-y1))*2;
return Sum;
} public static void main(String[] args) {
Rectangular r1 = new Rectangular(3,13,5,17);
System.out.println(""+r1.x1);
Rectangular r2 = (Rectangular)r1.clone();
System.out.println(""+r2.x1);
r2.x1=1; //到这里开始出错。
r2.x2=2;
r2.y1=7;
r2.y2=8; System.out.println(r1.Sum());
System.out.println(r2.Sum());
}
}