एनकैप्सुलेशन क्या है?
जावा में इनकैप्सुलेशन का मतलब यह है कि कोई चीज़ कैसे काम करती है, इसका विवरण छिपाकर रखा जाता है और साथ ही दूसरों को इसका उपयोग करने दिया जाता है। आप अपने डेटा (वैरिएबल की तरह) और तरीकों (फ़ंक्शन की तरह) को एक इकाई में समूहित करते हैं, जिसे क्लास कहा जाता है। हर किसी को सीधे अपने डेटा तक पहुंचने की अनुमति देने के बजाय, आप यह नियंत्रित करने के लिए तरीके (गेटर्स और सेटर्स) प्रदान करते हैं कि इसे कैसे एक्सेस किया जाए या बदला जाए। इस तरह, आप अपने डेटा की सुरक्षा करते हैं और अपने कोड को साफ और व्यवस्थित रखते हैं, बिना किसी को आंतरिक कामकाज में गड़बड़ी किए, जब तक कि आप ऐसा न चाहें।
इसका उपयोग कैसे करना है
जावा में एनकैप्सुलेशन का उपयोग करने के लिए, आप निजी फ़ील्ड के साथ एक क्लास बनाते हैं और उन फ़ील्ड तक पहुंचने और संशोधित करने के लिए सार्वजनिक तरीके (जैसे गेटर्स और सेटर्स) प्रदान करते हैं। यह सुनिश्चित करता है कि डेटा को केवल नियंत्रित तरीके से ही बदला जा सकता है। उदाहरण के लिए, यदि आप एक व्यक्ति वर्ग बनाना चाहते हैं जहां नाम और उम्र निजी हैं, तो आप मूल्यों को पुनः प्राप्त करने के लिए गेटर्स का उपयोग करेंगे और उन्हें अपडेट करने के लिए सेटर्स का उपयोग करेंगे। यहां बताया गया है कि आप यह कैसे कर सकते हैं:
public class Person { // Private fields private String name; private int age; // Constructor public Person(String name, int age) { this.name = name; this.age = age; } // Getter for name public String getName() { return name; } // Setter for name public void setName(String name) { this.name = name; } // Getter for age public int getAge() { return age; } // Setter for age public void setAge(int age) { if(age > 0) { // Simple validation this.age = age; } else { System.out.println("Age must be positive."); } } } // Using the Person class public class Main { public static void main(String[] args) { Person person = new Person("John", 25); // Accessing fields using getters System.out.println(person.getName()); // Output: John System.out.println(person.getAge()); // Output: 25 // Modifying fields using setters person.setName("Jane"); person.setAge(30); System.out.println(person.getName()); // Output: Jane System.out.println(person.getAge()); // Output: 30 } }
आइए इसे तोड़ें
आइए कोड को तोड़ें और प्रत्येक अनुभाग को चरण दर चरण समझाएं:
public class Person { // Private fields private String name; private int age; }
यह व्यक्ति वर्ग है जहां हम दो निजी फ़ील्ड परिभाषित करते हैं: नाम (एक स्ट्रिंग) और आयु (एक इंट)। इन क्षेत्रों को निजी बनाकर, हम यह सुनिश्चित करते हैं कि कोई अन्य वर्ग उन तक सीधे पहुंच या संशोधन नहीं कर सके। यह इनकैप्सुलेशन का मूल विचार है - किसी वस्तु की आंतरिक स्थिति को छिपाना।
// Constructor public Person(String name, int age) { this.name = name; this.age = age; }
पर्सन ऑब्जेक्ट बनने पर कंस्ट्रक्टर उसे इनिशियलाइज़ करता है। यह दो पैरामीटर लेता है, नाम और उम्र, और इन मानों को निजी फ़ील्ड में निर्दिष्ट करता है। यह सुनिश्चित करता है कि जब कोई नया व्यक्ति ऑब्जेक्ट बनाया जाता है, तो वह वैध डेटा से शुरू होता है।
// Getter for name public String getName() { return name; } // Setter for name public void setName(String name) { this.name = name; }
पर्सन ऑब्जेक्ट बनने पर कंस्ट्रक्टर उसे इनिशियलाइज़ करता है। यह दो पैरामीटर लेता है, नाम और उम्र, और इन मानों को निजी फ़ील्ड में निर्दिष्ट करता है। यह सुनिश्चित करता है कि जब कोई नया व्यक्ति ऑब्जेक्ट बनाया जाता है, तो वह वैध डेटा से शुरू होता है।
// Getter for age public int getAge() { return age; } // Setter for age public void setAge(int age) { if (age > 0) { // Simple validation this.age = age; } else { System.out.println("Age must be positive."); } }
गेटर getAge() उसी तरह काम करता है जैसे नाम के लिए, आयु फ़ील्ड तक पहुंच की अनुमति देता है।
सेटर setAge() न केवल आयु फ़ील्ड में संशोधन की अनुमति देता है बल्कि एक सत्यापन जांच भी जोड़ता है। यदि शर्त यह सुनिश्चित करती है कि आयु केवल तभी निर्धारित की जाती है जब यह एक सकारात्मक संख्या हो। यदि कोई अमान्य आयु प्रदान की जाती है (एक नकारात्मक संख्या की तरह), तो सेटर अपडेट को रोकता है और इसके बजाय एक संदेश प्रिंट करता है। यह इस बात का उदाहरण है कि कैसे एनकैप्सुलेशन आपको यह नियंत्रित करने देता है कि किस प्रकार का डेटा सेट किया जा सकता है।
// Using the Person class public class Main { public static void main(String[] args) { Person person = new Person("John", 25); // Accessing fields using getters System.out.println(person.getName()); // Output: John System.out.println(person.getAge()); // Output: 25 // Modifying fields using setters person.setName("Jane"); person.setAge(30); System.out.println(person.getName()); // Output: Jane System.out.println(person.getAge()); // Output: 30 } }
इस अनुभाग में, हम कंस्ट्रक्टर का उपयोग करके एक व्यक्ति ऑब्जेक्ट (व्यक्ति) बनाते हैं। कंस्ट्रक्टर प्रारंभिक नाम "जॉन" और उम्र 25 निर्धारित करता है।
फिर, हम नाम और उम्र के मानों को प्रिंट करने के लिए गेटर्स (getName() और getAge()) का उपयोग करते हैं। उसके बाद, हम मानों को अद्यतन करने के लिए सेटर्स (सेटनाम() और सेटएज()) का उपयोग करते हैं। अंत में, अद्यतन मान पुनः गेटर्स का उपयोग करके मुद्रित किए जाते हैं।
क्रिया में एनकैप्सुलेशन के मुख्य बिंदु:
निजी फ़ील्ड को कक्षा के बाहर से सीधे एक्सेस या संशोधित नहीं किया जा सकता है।
गेटर्स और सेटर्स निजी क्षेत्रों तक पहुंचने और उन्हें संशोधित करने का एक नियंत्रित तरीका प्रदान करते हैं।
आयु के लिए सेटर दर्शाता है कि आप डेटा को अमान्य इनपुट से बचाने के लिए नियमों को कैसे लागू कर सकते हैं (उदाहरण के लिए, आयु सकारात्मक होनी चाहिए)।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3