जावा एनकैप्सुलेशन

इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावा में एनकैप्सुलेशन और डेटा छिपाना सीखेंगे।

जावा एनकैप्सुलेशन

एनकैप्सुलेशन ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की प्रमुख विशेषताओं में से एक है। एनकैप्सुलेशन से तात्पर्य एकल वर्ग के अंदर खेतों और विधियों के बंडलिंग से है।

यह बाहरी वर्गों को एक वर्ग के खेतों और तरीकों तक पहुँचने और बदलने से रोकता है। इससे डेटा छिपाने में भी मदद मिलती है ।

उदाहरण 1: जावा एनकैप्सुलेशन

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

आउटपुट

 क्षेत्र: 30

उपरोक्त उदाहरण में, हमने एक क्षेत्र बनाया है जिसका नाम एरिया है। इस वर्ग का मुख्य उद्देश्य क्षेत्र की गणना करना है।

एक क्षेत्र की गणना करने के लिए, हमें दो चर चाहिए: लंबाई और चौड़ाई और एक विधि getArea():। इसलिए, हमने इन क्षेत्रों और विधियों को एक ही वर्ग के अंदर बांधा।

यहां, फ़ील्ड और विधियों को अन्य वर्गों से भी एक्सेस किया जा सकता है। इसलिए, यह डेटा छिपाना नहीं है ।

यह केवल एनकैप्सुलेशन है । हम सिर्फ समान कोड को एक साथ रख रहे हैं।

नोट : लोग अक्सर एनकैप्सुलेशन को डेटा छिपाने के रूप में मानते हैं, लेकिन यह पूरी तरह से सच नहीं है।

एनकैप्सुलेशन से तात्पर्य संबंधित क्षेत्रों और विधियों के एक साथ जुड़ने से है। इसका उपयोग डेटा छिपाने के लिए किया जा सकता है। अपने आप में एनकैप्सुलेशन डेटा छिपाना नहीं है।

एनकैप्सुलेशन क्यों?

  • जावा में, एनकैप्सुलेशन हमें संबंधित क्षेत्रों और विधियों को एक साथ रखने में मदद करता है, जो हमारे कोड को क्लीनर और पढ़ने में आसान बनाता है।
  • यह हमारे डेटा फ़ील्ड के मूल्यों को नियंत्रित करने में मदद करता है। उदाहरण के लिए,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    यहाँ, हम आयु को परिवर्तनशील बना रहे हैं privateऔर setAge()विधि के अंदर तर्क को लागू कर रहे हैं । अब, उम्र नकारात्मक नहीं हो सकती।
  • गेट्टर और सेटर विधियां हमारे वर्ग क्षेत्रों में केवल पढ़ने या लिखने के लिए ही पहुँच प्रदान करती हैं । उदाहरण के लिए,
     getName() // provides read-only access setName() // provides write-only access
  • यह एक प्रणाली के घटकों को डिकूप करने में मदद करता है। उदाहरण के लिए, हम कोड को कई बंडलों में एन्क्रिप्ट कर सकते हैं।
    इन अपघटित घटकों (बंडल) को स्वतंत्र और समवर्ती रूप से विकसित, परीक्षण और डीबग किया जा सकता है। और, किसी विशेष घटक में किसी भी परिवर्तन का अन्य घटकों पर कोई प्रभाव नहीं पड़ता है।
  • हम एनकैप्सुलेशन का उपयोग करके डेटा छिपाने को भी प्राप्त कर सकते हैं। उपरोक्त उदाहरण में, यदि हम लंबाई और चौड़ाई चर को निजी में बदलते हैं, तो इन क्षेत्रों तक पहुंच प्रतिबंधित है।
    और, उन्हें बाहरी वर्गों से छिपाकर रखा जाता है। इसे डाटा छिपाना कहते हैं ।

डेटा छिपाना

डेटा छिपाना कार्यान्वयन विवरण को छिपाकर हमारे डेटा सदस्यों की पहुंच को प्रतिबंधित करने का एक तरीका है। एनकैप्सुलेशन भी डेटा छिपाने का एक तरीका प्रदान करता है।

हम डेटा छिपाने के लिए एक्सेस मॉडिफायर का उपयोग कर सकते हैं। उदाहरण के लिए,

उदाहरण 2: निजी विनिर्देशक का उपयोग करके डेटा छिपाना

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

आउटपुट

 मेरी उम्र 24 है

उपरोक्त उदाहरण में, हमारे पास एक privateक्षेत्र आयु है। चूंकि यह है private, इसलिए इसे कक्षा के बाहर से एक्सेस नहीं किया जा सकता है।

आयु तक पहुंचने के लिए, हमने publicविधियों का उपयोग किया है: getAge()और setAge()। इन विधियों को गेट्टर और सेटर विधियां कहा जाता है।

उम्र को निजी बनाते हुए हमें कक्षा के बाहर से अनधिकृत पहुंच को प्रतिबंधित करने की अनुमति दी। यह डेटा छिपाना है

यदि हम मुख्य वर्ग से आयु क्षेत्र का उपयोग करने का प्रयास करते हैं, तो हमें एक त्रुटि मिलेगी।

 // error: age has private access in Person p1.age = 24;

दिलचस्प लेख...