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

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