java
Welche Methode wird aufgerufen, wenn ein Objekt in Java geklont wird?
Übe dein Wissen
Erklärung
Die clone() Methode in Java
Die Methode, die aufgerufen wird, wenn ein Objekt in Java geklont wird, ist die Methode clone(). Sie ermöglicht es uns, ein bestehendes Objekt zu duplizieren, indem eine neue Instanz erstellt und die Werte aus dem ursprünglichen Objekt in das neue Objekt kopiert werden. Dabei entspricht der Zustand des neu erstellten Objekts dem des ursprünglichen Objekts zur Zeit des Klonens.
Anwendungsbeispiel der clone() Methode
Angenommen, wir haben eine Klasse Person:
class Person implements Cloneable {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
public Object clone()throws CloneNotSupportedException{
return super.clone();
}
}
Nun können wir ein Objekt der Klasse Person erstellen und es dann klonen:
Person p1 = new Person("John", 30);
Person p2 = (Person)p1.clone();
Im obigen Code wird p1.clone() aufgerufen und ein neues Objekt p2 erstellt, das eine Kopie von p1 ist. Beide Objekte sind unabhängig voneinander.
Hinweise zur Verwendung der clone() Methode
- Implementieren Sie das Cloneable-Interface: Die Klasse muss das Cloneable-Interface implementieren, um die Methode
clone()zu nutzen. Wenn dies nicht geschieht und Sie dieclone()Methode aufrufen, wirft Java eineCloneNotSupportedException. - Überschreiben Sie die clone()-Methode: Standardmäßig ist die
clone()-Methode in der Klasse Objectprotected, was bedeutet, dass sie nur innerhalb der Klasse selbst und in ihren Subklassen aufgerufen werden kann. Wenn Sie dieclone()Methode in einer anderen Klasse aufrufen möchten, müssen Sie sie in Ihrer Klasse überschreiben und ihre Sichtbarkeit aufpublicändern.
Die clone() Methode ist eine effektive Möglichkeit, Objekte in Java zu duplizieren, ihr Gebrauch sollte jedoch mit Bedacht erfolgen, da sie auch gewisse Risiken birgt, etwa in Bezug auf Sicherheit und Kapselung. Es ist immer ratsam, die Methoden equals() und hashCode() zu überschreiben, wenn die Methode clone() überschrieben wird, um die Konsistenz zu gewährleisten und unerwartetes Verhalten zu vermeiden.
Willst du mehr davon? Mach das komplette Java Grundlagen-Quiz.
Quiz Starten