题目:
编写一个包含若干个属性的类A,
要求在A中定义一个可以得到A的拷贝方法,
编写一个能够比较A类对象,其值是否相等的方法。这个是老师讲的方法:
class A{
String name; int age;
public A(String n,int a){ this.name=n; this.age=a;}
public A copy()
{...新建一个返回对象,其属性的值等于this的对应属性的值....}
public boolean compare(A v)
{.....比较v中每一个‘属性’的值是否等于this对应的属性的值,都相等返回true,否则返回false....}
}
A x=new A(“QQ”,10); //x代表name="QQ" age=10的A类对象。
A y=x.copy(); //y代表x的拷贝,这个拷贝的对象其name="QQ",age=10。但x和y不是同一个对象。
boolean z=x.compare(y); //z为true,因为x和y的name值及其age值都相等。 这个是我的做法:package t28;
public class NewClass {
int a;
int b;
double c;
}
class A{
A x=new A("QQ",10);
A y=x.copy();
boolean z=x.compare(y);
String name;int age;
public A(String n,int a){
this.name=n; this.age=a;
}
public A copy(){
A y=new A();
String names;
int ages;
names=this.name;
ages=this.age; return null;
}public boolean compare(Av)
{
if(A==v)
return true;
else
return false;
}
}
知道做法的话,帮忙做一下,这个关系到我的期末成绩的,谢谢!
编写一个包含若干个属性的类A,
要求在A中定义一个可以得到A的拷贝方法,
编写一个能够比较A类对象,其值是否相等的方法。这个是老师讲的方法:
class A{
String name; int age;
public A(String n,int a){ this.name=n; this.age=a;}
public A copy()
{...新建一个返回对象,其属性的值等于this的对应属性的值....}
public boolean compare(A v)
{.....比较v中每一个‘属性’的值是否等于this对应的属性的值,都相等返回true,否则返回false....}
}
A x=new A(“QQ”,10); //x代表name="QQ" age=10的A类对象。
A y=x.copy(); //y代表x的拷贝,这个拷贝的对象其name="QQ",age=10。但x和y不是同一个对象。
boolean z=x.compare(y); //z为true,因为x和y的name值及其age值都相等。 这个是我的做法:package t28;
public class NewClass {
int a;
int b;
double c;
}
class A{
A x=new A("QQ",10);
A y=x.copy();
boolean z=x.compare(y);
String name;int age;
public A(String n,int a){
this.name=n; this.age=a;
}
public A copy(){
A y=new A();
String names;
int ages;
names=this.name;
ages=this.age; return null;
}public boolean compare(Av)
{
if(A==v)
return true;
else
return false;
}
}
知道做法的话,帮忙做一下,这个关系到我的期末成绩的,谢谢!
楼主【zhuqiang1268】截止到2008-06-26 00:39:57的历史汇总数据(不包括此帖):
发帖数:0 发帖分:0
结贴数:0 结贴分:0
未结数:0 未结分:0
结贴率:-------------------结分率:-------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
另,比较可以重写equals方法吧
你用clone吧
学了一个学期的java,应该对常的方法有所了解
public class A {
// 最好不要在这里写,下面被注释的这些。写在调用的方法里,比如下面的main方法
// A x=new A("QQ",10);
// A y=x.copy();
// boolean z=x.compare(y); String name; int age; public A(String n, int a) {
this.name = n;
this.age = a;
} public A() {
} public A copy() {
A y = new A(); // 由于定义了构造方法A(String n,int a),所以原来的A()被覆盖,要重新定义
// String names; 这里定义names和ages完全没必要,用y.age y.name
// int ages;
// names=this.name;
// ages=this.age;
y.age = this.age;
y.name = this.name;
//return null;返回null ?,如果这样copy方法返回的始终是null
return y;
} public boolean compare(A v) // 这里没有空格
{
// 原来是 if(A==v),A是一个类,v是A类的对象,怎么能这么比较呢
// 并且==是比较地址,或比较基础类型(比如int),用equals才是对象值的比较
if (this.name.equals(v.name) && this.age == v.age)
return true;
else
return false;
}
public static void main(String[] args) {
A x = new A("姓名", 123);
A y = x.copy();
System.out.println(x.compare(y)); y.age = 456;
System.out.println(x.compare(y));
}
}
标准写法就是7楼的。 你可以自己看看jdk文档 复制用clone作 比较重写equals