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

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?
一个一个的赋值太麻烦,能否考虑采用引用传递?
该怎样解决?谢谢!


...全文
33 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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中

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧