1. Konzepte der flachen Kopie und der tiefen Kopie
⑴Flache Kopie (flacher Klon)
Alle Variablen des kopierten Objekts enthalten dieselben Werte wie das Originalobjekt, und alle Verweise auf andere Objekte bleiben Punkte zum Originalobjekt. Mit anderen Worten: Eine flache Kopie kopiert nur das betreffende Objekt, nicht die Objekte, auf die sie verweist.
⑵ Deep Copy (Deep Clone)
Alle Variablen des kopierten Objekts enthalten die gleichen Werte wie das Originalobjekt, mit Ausnahme von diese Referenzen Variablen anderer Objekte. Variablen, die auf andere Objekte verweisen, verweisen auf die kopierten neuen Objekte und nicht auf die ursprünglich referenzierten Objekte. Mit anderen Worten: Beim Deep Copy werden alle Objekte kopiert, auf die das zu kopierende Objekt verweist.
2. Javas clone()-Methode
⑴ Die clone-Methode kopiert das Objekt und gibt es an den Aufrufer zurück. Im Allgemeinen erfüllt die clone()-Methode Folgendes:
① Für jedes Objekt x gibt es x.clone() !=x//Das geklonte Objekt ist nicht dasselbe Objekt wie das Originalobjekt
② Für jedes Objekt Wenn die Definition angemessen ist, sollte x.clone().equals(x) gelten.
⑵Klonen von Objekten in Java
①Um eine Kopie des Objekts zu erhalten, können wir die clone()-Methode der Object-Klasse verwenden.
② Überschreiben Sie die clone()-Methode der Basisklasse in der abgeleiteten Klasse und deklarieren Sie sie als öffentlich.
③Rufen Sie in der clone()-Methode der abgeleiteten Klasse super.clone() auf.
④Implementieren Sie die Cloneable-Schnittstelle in der abgeleiteten Klasse.
Bitte beachten Sie den folgenden Code:
class Student implementiert Cloneable
{
String name;
int age;
Student(String name,int age)
{
this.name=name;
this. age =age;
}
public Object clone()
{
Object o=null;
try
{
o=(Student)super.clone();//Der clone() in Object identifiziert, welches
// Objekt Sie kopieren möchten.
}
Catch(CloneNotSupportedException e)
{
System.out.PRintln(e.toString());
}
return o;
}
}
public static void main(String[] args)
{
Student s1=new Student("zhangsan",18);
Student s2=(Student)s1.clone();
Das Obige ist in JAVA Für den Inhalt von Shallow Copy und Deep Copy beachten Sie bitte die chinesische PHP-Website (m.sbmmt.com), um weitere verwandte Inhalte zu erhalten!