色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

PHP對象的淺復(fù)制與深復(fù)制的實例詳解

呂致盈2年前27瀏覽0評論

PHP對象的淺復(fù)制與深復(fù)制的實例詳解?

原型模式

用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象

原型模式是基于深復(fù)制和淺復(fù)制的,在Java里面有2種復(fù)制:

淺復(fù)制

將一個對象復(fù)制之后,生成一個新的對象,新對象的所有成員變量(基本類型或引用類型)都含有與原

有對象相同的值,如果原有對象的成員變量是基本數(shù)據(jù)類型,就會將這個變量的值拷貝一份到新對象

里面,如果原有對象的成員變量是引用數(shù)據(jù)類型,那么這個引用指向的對象不會新生成一份,而是,

在新對象里面的這個引用跟原有對象的引用指向的是同一個對象。

深復(fù)制

將一個對象復(fù)制之后,生成一個新的對象,新對象的基本數(shù)據(jù)類型變量含有與原有對象相同的值,如

果原有對象的成員變量是引用數(shù)據(jù)類型,在新對象里面,這些引用變量將指向被復(fù)制過的新對象,而

不再是指向原有的那些被引用的對象,深復(fù)制把要復(fù)制的對象所引用的對象都復(fù)制一遍。

比如:

有一個A對象,經(jīng)過復(fù)制之后產(chǎn)生一個B對象,如果A里面有一個int型的變量i值為4,那么B對象里面

的inti的值也是4,A對這個int型變量的改變,不會影響B(tài),如果A里面有一個成員變量c是引用類型

的,它指向了對象D,經(jīng)過復(fù)制,B里面也會有一個c,這個c也指向D對象,A的c和B的c指向的是同一個

對象D,這就是淺復(fù)制。如果是深復(fù)制,A里面的c指向一個D對象,對于B里面的c會指向一個新的對象

,他們指向的不是同一個對象,這樣,在原有對象里面對成員變量c指向的對象D做的任何改變,不會

影響新對象。

舉個最簡單的例子:

classA{

publicinti;

publicintj;

}

Aa=newA();

淺拷貝:

Aa1=a;

深拷貝:

Aa1=newA();

a1.i=a.i;

a1.j=a.j;

感覺如下:

淺拷貝只拷貝對象本身

深拷貝則拷貝對象中引用的對象,一直拷貝下去。