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