Рассмотрим следующий случай:
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;
Конечно, реальные объекты немного сложнее, поэтому это не просто копирование двух целых чисел. Но они также не слишком сложны.
Я знаю, что я могу написать конструктор для B следующим образом:
public B(A anA) {
this.a = anA.a;
this.b = anA.b;
this.z = 0;
}
Но если это действительно единственный способ, я предпочитаю слияние дополнительных членов B в A.
обновление с учетом ответов
Мой вопрос был недостаточно ясным. Я понимаю, что objB = objA; не может работать (таким образом, я попросил "что-то вроде", что означает что-то с сопоставимой сложностью кода), и я знаю о проблемах с неглубокими или глубокими копиями.
То, что я искал, - это возможность скопировать элементы базового класса (скажем, с помощью clone()). Вы можете понять, что копирование каждого пользователя вручную - это плохое решение, поскольку оно добавляет сложности и избыточность кода. Спасибо за ваши ответы в любом случае!