Wie man ein Objekt in Java richtig kopiert: flache und tiefe Kopie
Hallo zusammen! Ich habe gerade angefangen, Java zu lernen, und bin auf ein Problem gestoßen, das mich sehr verwirrt. Ich versuche, ein Objekt zu kopieren, erhalte aber unerwartete Ergebnisse. Angenommen, ich habe eine einfache Klasse Person mit den Feldern name und age sowie einem eingebetteten Objekt Address.\n\nWenn ich schreibe:\n\n```java\nPerson p1 = new Person("Ivan", 30, new Address("Moskau", "Tverskaya", 10));\nPerson p2 = p1;\np2.setName("Peter");\nSystem.out.println(p1.getName()); // Gibt "Peter" aus - warum?!\n```\n\nIch hatte erwartet, dass p1 "Ivan" bleibt und p2 "Peter" wird. Aber wie ich verstanden habe, ist das nur eine Referenzkopie. Ich habe versucht, die Methode clone() zu verwenden:\n\n```java\npublic class Person implements Cloneable {\n private String name;\n private Address address;\n // Konstruktor, Getter, Setter\n @Override\n protected