PHP對象的淺復制與深復制的實例詳解?
原型模式
指定要用原型實例創建的對象種類,并通過復制這些原型來創建新對象。
原型模式基于深度復制和淺層復制,Java中有兩種復制:
淺拷貝
復制一個對象后,生成一個新對象,新對象的所有成員變量(基本類型或引用類型)都包含與原對象相同的信息。
存在具有相同值的對象。如果原始對象的成員變量是基本數據類型,該變量的值將被復制到新對象中。
在內部,如果原對象的成員變量是引用數據類型,則該引用指向的對象不會生成新的成員變量,但是,
新對象中的引用指向與原始對象中的引用相同的對象。
深層拷貝
復制對象后,會生成一個新對象,新對象的基本數據類型變量包含與原始對象相同的值,例如
如果原始對象的成員變量是引用數據類型,在新對象中,這些引用變量將指向復制的新對象,并且
深度復制不是指向原始引用對象,而是復制要復制的對象所引用的所有對象。
比如:。
有一個A對象,復制后產生一個B對象。如果A中有一個I值為4的int變量,那么在B對象中,
inti的值也是4,A對這個int變量的更改不會影響B,如果A中有一個成員變量C是引用類型。
對,它指向對象d,復制后B中會有一個C,這個C也指向對象d,CofA和B的C指向同一個。
對象d,這是一個淺拷貝。如果是深度拷貝,A中的C指向一個D對象,B中的C指向一個新對象。
他們沒有。;t指向同一個對象,所以對原始對象中成員變量C所指向的對象D的任何更改都不會
影響新對象。
舉個最簡單的例子:
a類
公共報
publicintj
}
阿內瓦
淺層拷貝:
Aa1a
深層副本:
Aa1n
有沒有java編程大神?誰能給我詳解一下類與對象,有點懵圈?
Class就是你隨便定義的用來描述你認為可以歸為一類的東西,你定義的具體描述語句就是你加到這個類上的屬性。比如你覺得你要把一個有長和寬的對象描述成M類,那么M就是一個用戶自定義的類,它有兩個屬性:長和寬。對象是通過給定義的類的所有或部分屬性賦值而生成的。比如上面定義的M類,在創建構造函數的時候,你允許長度和寬度來設置它的屬性,所以你直接從M得到的k就知道M(10,20)是對象。簡單來說。然而,對象是類的實例化。一般來說,不同的對象是通過給類的屬性賦予不同的值而生成的。