डीप कॉपी और उथली कॉपी दोनों अलग-अलग तरीकों से दिए गए ऑब्जेक्ट की कॉपी बनाने का संदर्भ देते हैं -
उथली कॉपी
यह मूल रूप से ऑब्जेक्ट का एक नया उदाहरण बनाता है और मूल डेटा सेट से सभी डेटा को नए बनाए गए इंस्टेंस में कॉपी करता है। इसका मतलब है कि नव निर्मित उदाहरण को विशेष रूप से मूल वस्तु में डालना होगा। इसे 'उथले क्लोनिंग' के रूप में भी जाना जाता है।
उदाहरण
import java.util.* ; class Demo{ private int[] my_data; public Demo(int[] my_vals){ my_data = my_vals; } public void display_data(){ System.out.println(Arrays.toString(my_data) ); } } public class Use_Demo{ public static void main(String[] args){ int[] my_vals = {56, 89, 91}; Demo my_inst = new Demo(my_vals); my_inst.display_data(); my_vals[0] = 65; my_inst.display_data(); } }
आउटपुट
[56, 89, 91] [65, 89, 91]
डेमो नामक एक वर्ग में एक चर और एक निर्माता होता है जो सरणी के तत्वों को नए सरणी में कॉपी करता है। 'डिस्प्ले_डेटा' नाम का एक अन्य फ़ंक्शन डेटा की इस सरणी को प्रदर्शित करता है। मुख्य फ़ंक्शन में, एक उदाहरण बनाया जाता है, सरणी परिभाषित की जाती है, और फ़ंक्शन को कॉल किया जाता है। कंसोल पर सभी परिवर्तनों के साथ प्रासंगिक आउटपुट प्रदर्शित होता है।
डीप कॉपी
इसका उपयोग तब किया जाता है जब अलग-अलग उद्देश्य या उपयोग के लिए डेटा की एक अलग कॉपी की आवश्यकता होती है। कक्षा के सभी सदस्यों को 'क्लोनेबल' इंटरफ़ेस लागू करने और 'क्लोन' पद्धति को ओवरराइड करने की आवश्यकता है।
उदाहरण
import java.util.*; class Demo{ private int[] my_data; public Demo(int[] my_vals){ my_data = new int[my_vals.length]; for (int i = 0; i < my_data.length; i++){ my_data[i] = my_vals[i]; } } public void display_data(){ System.out.println(Arrays.toString(my_data)); } } public class Use_Demo{ public static void main(String[] args){ int[] my_vals = {56, 89, 91}; Demo my_inst = new Demo(my_vals); my_inst.display_data(); my_vals[0] = 65; my_inst.display_data(); } }
आउटपुट
[56, 89, 91] [56, 89, 91]
डेमो नामक एक वर्ग में एक चर और एक कंस्ट्रक्टर होता है जो सरणी के माध्यम से पुनरावृति करता है, और इसे किसी अन्य सरणी में कॉपी करता है। 'डिस्प्ले_डेटा' नाम का एक अन्य फ़ंक्शन डेटा की इस सरणी को प्रदर्शित करता है। मुख्य फ़ंक्शन में, एक उदाहरण बनाया जाता है, सरणी परिभाषित की जाती है, और फ़ंक्शन को कॉल किया जाता है। कंसोल पर सभी परिवर्तनों के साथ प्रासंगिक आउटपुट प्रदर्शित होता है।