Я попытался клонировать объект и изменить функции-члены нового клонированного объекта. Если это мелкая копия и, согласно вики-странице, мелкая копия и исходный объект указывают на один и тот же объект, он должен изменить значение переменной.
CloneExample obj1=new CloneExample();
CloneExample obj2=(CloneExample) obj1.clone();
obj1.a=2;
obj1.c='a';
System.out.println("obj1 real "+obj1.a+" "+obj1.c);
System.out.println("obj2 real "+obj2.a+" "+obj2.c);
obj2.a=99;
obj2.c='z';
System.out.println("obj2 after change "+obj2.a+" "+obj2.c);
System.out.println("obj1 after change "+obj1.a+" "+obj1.c);
System.out.println("obj1="+obj1+" obj2="+obj2);
Если этот клон является мелкой копией, то obj2 и Obj1 указывают на одну и ту же ссылочную obj, изменение obj2 должно отражаться в obj1. Так не бывает Может ли кто-нибудь объяснить (я понимаю, что клон предназначен для того, чтобы дать нам копию объекта, но если это мелкая копия, тогда зачем нам нужна мелкая копия?
Спасибо.