关于引用传递/继承,解决问题,立即结贴

lci21 2002-11-20 03:33:53
class A
{
...
}
class B extends A
{
....
}
class C extends A
{
....
}
已知B和C拥有完全相同的属性和方法
B b=...;
C c=new C();
请问,如何才能把b对象的属性全部赋给c?
一个一个的赋值太麻烦,能否考虑采用引用传递?
该怎样解决?谢谢!


...全文
9 点赞 收藏 10
写回复
10 条回复
lci21 2002年11月21日
现在突然发现,两张表的主键字段名不同(导致由这两张表生成的数据对象类有一个属性不同,其余都相同),问是否还能用clone方法,别的有没有简便的方法?
回复 点赞
ilka 2002年11月20日
在编程是要注意:
尽量在同一时刻,不要存在两个reference指向同一个对象。
回复 点赞
ilka 2002年11月20日
如果两张表的数据永远是一样的,只需有B,C没有存在价值。
如果两张表的数据不是永远一样的,用clone(),千万不要用引用传递,那会导致,B,C永远是一样的。
回复 点赞
ilka 2002年11月20日
别忘了
class B extends A implements Cloneable
{
Object o = null;
public Object clone()
{
try{o = super.clone();}catch(CloneNotSupportedException e){}
}
return o;
}
回复 点赞
title 2002年11月20日
当然是用clone了,用发楼上的说了。clone是拷贝变量所有值包括类的内部变量值。copy也可以拷贝,但是区别就是只能以初始化的形式创建要实现的类。
回复 点赞
lci21 2002年11月20日
因为是由两个数据表生成的数据对象,这两个表字段相同,一个表是存放临时信息,另一个存放永久数据
回复 点赞
study_body 2002年11月20日
完全相同为什么还用两个呢?
回复 点赞
lci21 2002年11月20日
问:
如果B和C的属性有所不同,怎么办?
回复 点赞
希偌 2002年11月20日
B b=new B();
C c=(C)b.clone();
用clone试试
回复 点赞
zsz2000 2002年11月20日
你应该把相同的属性和方法放到A中
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告