Was bedeutet es, ein Objekt zu klonen ()?

8

Was ist Objektklonen in vb6 oder Java? In welcher Situation verwenden wir einen Klon? Was bedeutet Klonen von Objekten? Kann mir jemand bitte mit Beispiel erzählen.

    
pbrp 17.11.2009, 15:19
quelle

2 Antworten

11

Beim Kopieren werden die Objektdaten tatsächlich in ein neues Objekt kopiert.

In diesem Beispiel werden die Daten nicht geklont:

%Vor%

Wenn Foo ein Mitglied a hat und Sie p.a ändern, ändert sich auch o.a , weil sowohl p als auch o auf dasselbe Objekt zeigen.

Allerdings

%Vor%

Wenn Sie in diesem Fall p.a ändern, bleibt o.a gleich, weil sie tatsächlich auf separate Objekte zeigen.

Es gibt zwei verschiedene Arten, Klon zu klonen: oberflächlicher Klon oder tiefer Klon.

Ein oberflächlicher Klon erzeugt nur ein neues Objekt und kopiert die Mitglieder in das neue Objekt. Das heißt, wenn eines der Elemente tatsächlich ein Zeiger auf ein anderes Objekt ist, wird dieses Objekt zwischen dem alten Objekt und dem neuen Objekt geteilt.

Ein tiefer Klon geht tatsächlich durch und klont alle Mitglieder in das neue Objekt. Auf diese Weise sind die Objekte vollständige Kopien aller Daten.

    
Aaron 17.11.2009, 15:26
quelle
2

Allgemein gesprochene Objekte werden als Referenz übergeben. Wenn Sie also $objB=$objA sagen, erhalten Sie kein neues Objekt. Sie erhalten einen neuen Namen für das gleiche Objekt. Wenn Sie jedoch $objB= clone $objA sagen, erhalten Sie eine Kopie von $objA . Im ersten Fall passiert auch, was Sie mit $objB machen, auch mit $objA . Im zweiten Fall ist $objB unabhängig.

    
dnagirl 17.11.2009 15:27
quelle

Tags und Links