创建实例考虑以下情况:从父实例
class A {
int x;
int y;
}
class B extends A {
int z;
}
现在,某处代码这个类是像这样使用:
A objA = getAFromSomewhere();
B objB = null;
而且在一定的情况下,我想要做的事像
objB = objA; // can't do this
objB.z = someZ;
当然,真正的对象有点复杂,所以它不只是复制两个我NTS。但他们也不太复杂。
我知道我能写这样对于B构造:
public B(A anA) {
this.a = anA.a;
this.b = anA.b;
this.z = 0;
}
但如果这真的是唯一的方式,我更喜欢B的其他成员并入A.
更新考虑回答
我的问题还不够清楚。我明白objB = objA;无法工作(因此我要求“类似的东西”,这意味着具有类似代码复杂性的东西),并且我知道浅与深拷贝的问题。
我在找的是复制基类成员的可能性(比方说使用clone())。您可能会明白,手动复制每个成员是一个不好的解决方案,因为它会增加代码的复杂性和冗余性。无论如何感谢您的回复!
我已经修改我的问题以将此考虑在内。看起来真的没有优雅的解决方案 –
@ didi_X8:确实 - 但重要的是你要了解*为什么没有一般的优雅解决方案。例如,如果我能够写出:“Object x =”Hello“,这意味着什么? FileOutputStream stream = x;'? –
“您可能只是想在B中创建一个构造函数,它需要一个A并将所有A数据复制到新的B.”是的,那正是我想要的。但没有单独提及A的每个成员。 –