Предположим, у меня есть 2 унаследованных класса с действительно большим количеством полей,
Я хочу создать еще одно "семейство наследования" с классами C, D, которое будет иметь те же значения - содержимое (в ВРЕМЯ РАБОТЫ), как в примере ниже ..
package server.api.analytics;
public class A {
protected String param1;
protected String param2;
protected String param3;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
public String getParam3() {
return param3;
}
public void setParam3(String param3) {
this.param3 = param3;
}
public static void main(String[] args) {
B b = new B();
b.setParam1("out_param1");
b.setParam2("out_param2");
b.setParam3("out_param3");
b.setParam4("out_param4");
b.setParam5("out_param5");
System.out.println(b.toString());
// OUTPUT:
B{param1='out_param1', param2='out_param2', param3='out_param3',
param4='out_param4', param5='out_param5'}
// EXPECTED :
D{param1='out_param1', param2='out_param2', param3='out_param3',
param4='out_param4', param5='out_param5'}
}
}
class B extends A {
protected String param4;
protected String param5;
public String getParam4() {
return param4;
}
public void setParam4(String param4) {
this.param4 = param4;
}
public String getParam5() {
return param5;
}
public void setParam5(String param5) {
this.param5 = param5;
}
@Override
public String toString() {
return "B{" +
"param1='" + param1 + '\'' +
", param2='" + param2 + '\'' +
", param3='" + param3 + '\'' +
", param4='" + param4 + '\'' +
", param5='" + param5 + '\'' +
'}';
}
}
B{param1='out_param1', param2='out_param2', param3='out_param3', param4='out_param4', param5='out_param5'}
Я не хочу делать как "копирующий подрядчик" и просматривать все свойства, потому что их много, и если я сделаю "глубокое копирование" с клоном, имя класса будет таким же
Пример ожидается:
D{param1='out_param1', param2='out_param2', param3='out_param3', param4='out_param4', param5='out_param5'}