在我們建立Something類的實(shí)例時,會使用下面的表達(dá)式:
new Something();
利用new指定類名可以產(chǎn)生對象實(shí)例。但是在有些情況下不靠new來產(chǎn)生實(shí)例是方便和必要的:
1. 種類過多無法整合成類時
2. 不容易利用類產(chǎn)生對象實(shí)例時
3. 希望把框架和所產(chǎn)生的對象實(shí)例分開時
例子:
prePlus類可以把一個char打印,打印前其前面加上"+",Manager類通過HashMap保持注冊的類,用戶可以通過這個類根據(jù)鍵值取得以注冊的類,產(chǎn)生實(shí)例對象。Product接口繼承java.lang.Cloneable接口,而要注冊的類實(shí)現(xiàn)Product這個接口。這個接口是Manager與其他類溝通的橋梁。Manager類中沒有類名,只有Product接口,這一點(diǎn)很重要。
類圖
//Product接口
//Manager類
//prePlus類
//Main測試類
JAVA的clone方法是淺拷貝(shallow copy)。利用clone方法所做的操作是直接復(fù)制字段內(nèi)容。這個操作并不管該字段的對象實(shí)際內(nèi)容。假設(shè)現(xiàn)在有個字段對應(yīng)到一個數(shù)組,當(dāng)你用clone方法進(jìn)行復(fù)制時,復(fù)制的結(jié)果只對應(yīng)到該數(shù)組的參照而已,并不會一個個復(fù)制該數(shù)組的元素。如果淺拷貝不能滿足你,就需要重寫clone方法,自定義想要的"復(fù)制結(jié)果"。另外,clone方法只會進(jìn)行復(fù)制而已,并沒有調(diào)用構(gòu)造函數(shù)。如果初始化里有特殊處理,要在clone里做相應(yīng)操作。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
