access modifiers java tutorial with examples
यह वीडियो ट्यूटोरियल बताता है कि जावा में एक्सेस मॉडिफायर क्या हैं और उदाहरणों की मदद से डिफॉल्ट, पब्लिक, प्रोटेक्टेड और प्राइवेट एक्सेस मॉडिफायर का उपयोग कैसे करें:
जावा में, हमारे पास कक्षाएं और ऑब्जेक्ट हैं। ये कक्षाएं और ऑब्जेक्ट एक पैकेज में निहित हैं। इसके अलावा, कक्षाओं में नेस्टेड कक्षाएं, विधियां, चर आदि हो सकते हैं। जैसा कि जावा एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है, हमें इनकैप्सुलेशन का पालन करना होगा जिसमें हम अवांछित विवरण छिपाते हैं।
जावा 'एक्सेस मॉडिफायर या एक्सेस स्पेसर्स' नामक संस्थाएं प्रदान करता है जो हमें पैकेज, क्लास, कंस्ट्रक्टर, विधियों, चर या अन्य डेटा सदस्यों के दायरे या दृश्यता को प्रतिबंधित करने में मदद करते हैं। इन एक्सेस मॉडिफायर्स को भी कहा जाता है 'दृश्यता विनिर्देशक'।
एक्सेस स्पेसियर्स का उपयोग करके, एक विशेष वर्ग विधि या चर को अन्य वर्गों तक पहुंचने या छुपाने के लिए प्रतिबंधित किया जा सकता है।
=> यहाँ सभी जावा ट्यूटोरियल की जाँच करें।
बड़े डेटा एनालिटिक्स में प्रयुक्त उपकरण
आप क्या सीखेंगे:
- जावा में एक्सेस मोडिफ़ायर पर वीडियो ट्यूटोरियल
- जावा में संशोधक का उपयोग करें
- जावा में एक्सेस मोडिफायर के प्रकार
- निष्कर्ष
जावा में एक्सेस मोडिफ़ायर पर वीडियो ट्यूटोरियल
जावा में संशोधक का उपयोग करें
एक्सेस निर्दिष्टकर्ता यह भी निर्धारित करते हैं कि किसी वर्ग के डेटा सदस्य (तरीके या फ़ील्ड) को कक्षाओं या पैकेजों के अन्य डेटा सदस्यों द्वारा कैसे एक्सेस किया जा सकता है। एन्कैप्सुलेशन और पुन: प्रयोज्य सुनिश्चित करने के लिए, ये एक्सेस स्पेसिफिकर्स / मोडिफ़ायर ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक अभिन्न अंग हैं।
जावा में संशोधक दो प्रकार के होते हैं:
(1) एक्सेस मॉडिफायर
जावा में एक्सेस मॉडिफ़ायर हमें डेटा सदस्य के क्षेत्र या पहुंच या दृश्यता को सेट करने की अनुमति देते हैं, यह एक क्षेत्र, कंस्ट्रक्टर, क्लास या विधि हो सकता है।
# 2) गैर-पहुंच वाले संशोधक
जावा गैर-पहुंच विनिर्देशक भी प्रदान करता है जो कक्षाओं, चर, विधियों, निर्माणकर्ताओं, आदि के साथ उपयोग किए जाते हैं। गैर-पहुँच विनिर्देशक / संशोधक संस्थाओं के व्यवहार को जेवीएम के रूप में परिभाषित करते हैं।
जावा में कुछ गैर-पहुंच निर्दिष्टकर्ता / संशोधक हैं:
- स्थिर
- अंतिम
- सार
- क्षणिक
- परिवर्तनशील
- सिंक्रनाइज़
- देशी
हमने अपने पहले के ट्यूटोरियल में स्थिर, सिंक्रनाइज़ और अस्थिर कीवर्ड को कवर किया है। हम अपने भविष्य के ट्यूटोरियल में अन्य नॉन-एक्सेस मॉडिफायर्स को कवर करेंगे क्योंकि वे इस ट्यूटोरियल के दायरे से परे हैं।
जावा में एक्सेस मोडिफायर के प्रकार
जावा चार प्रकार के एक्सेस स्पेसियर प्रदान करता है जिनका उपयोग हम कक्षाओं और अन्य संस्थाओं के साथ कर सकते हैं।
ये:
# 1) डिफ़ॉल्ट: जब भी किसी विशिष्ट पहुँच स्तर को निर्दिष्ट नहीं किया जाता है, तो इसे 'डिफ़ॉल्ट' मान लिया जाता है। डिफ़ॉल्ट स्तर का दायरा पैकेज के भीतर है।
# 2) सार्वजनिक: यह सबसे आम पहुंच स्तर है और जब भी सार्वजनिक पहुंच विनिर्देशक का उपयोग किसी इकाई के साथ किया जाता है, तो वह विशेष इकाई, कक्षा के भीतर या बाहर, पैकेज के भीतर या बाहर, आदि से सुलभ होती है।
# 3) संरक्षित: संरक्षित एक्सेस स्तर में एक गुंजाइश है जो पैकेज के भीतर है। विरासत में मिली क्लास या चाइल्ड क्लास के माध्यम से पैकेज के बाहर एक संरक्षित संस्था भी उपलब्ध है।
# 4) निजी: जब कोई इकाई निजी होती है, तो इस इकाई को कक्षा से बाहर नहीं पहुँचा जा सकता है। एक निजी संस्था केवल कक्षा के भीतर से ही सुलभ हो सकती है।
हम निम्न तालिका में पहुंच संशोधक को सारांशित कर सकते हैं।
पहुँच विनिर्देशक | इनसाइड क्लास | पैकेज के अंदर | बाहर पैकेज उपवर्ग | बाहर का पैकेज |
---|---|---|---|---|
निजी | हाँ | ऐसा न करें | ऐसा न करें | ऐसा न करें |
चूक | हाँ | हाँ | ऐसा न करें | ऐसा न करें |
संरक्षित | हाँ | हाँ | हाँ | ऐसा न करें |
जनता | हाँ | हाँ | हाँ | हाँ |
अगला, हम इनमें से प्रत्येक एक्सेस स्पेसियर के बारे में विस्तार से चर्चा करेंगे।
डिफ़ॉल्ट एक्सेस स्पेसिफिकर्स
जावा में एक डिफ़ॉल्ट एक्सेस संशोधक का कोई विशिष्ट कीवर्ड नहीं है। जब भी पहुंच संशोधक निर्दिष्ट नहीं किया जाता है, तो इसे डिफ़ॉल्ट माना जाता है। कक्षाओं, विधियों और चर जैसी संस्थाओं की डिफ़ॉल्ट पहुँच हो सकती है।
एक डिफ़ॉल्ट वर्ग पैकेज के अंदर पहुंच योग्य है, लेकिन यह पैकेज के बाहर से पहुंच योग्य नहीं है यानी पैकेज के अंदर सभी वर्ग जिसमें डिफ़ॉल्ट वर्ग परिभाषित है वह इस वर्ग तक पहुंच सकता है।
इसी तरह एक डिफ़ॉल्ट विधि या चर भी पैकेज के अंदर पहुंच योग्य है जिसमें वे परिभाषित होते हैं और पैकेज के बाहर नहीं।
नीचे दिए गए प्रोग्राम जावा में डिफ़ॉल्ट एक्सेस संशोधक को प्रदर्शित करते हैं।
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
आउटपुट:
उपरोक्त कार्यक्रम में, हमारे पास एक वर्ग और एक विधि है जिसके अंदर कोई एक्सेस संशोधक नहीं है। इसलिए क्लास और मेथड डिस्प्ले दोनों में डिफॉल्ट एक्सेस होता है। तब हम देखते हैं कि विधि में, हम सीधे कक्षा का एक ऑब्जेक्ट बना सकते हैं और विधि को कॉल कर सकते हैं।
विंडोज़ 10 के लिए सबसे अच्छा सफाई उपकरण
सार्वजनिक पहुँच संशोधक
जावा प्रोग्राम में किसी भी वर्ग या पैकेज से एक वर्ग या एक विधि या specified जनता ’के रूप में निर्दिष्ट डेटा क्षेत्र सुलभ है। सार्वजनिक संस्था पैकेज के भीतर और पैकेज के बाहर भी सुलभ है। सामान्य तौर पर, सार्वजनिक पहुंच संशोधक एक ऐसा संशोधक होता है जो इकाई को प्रतिबंधित नहीं करता है।
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
आउटपुट:
संरक्षित अभिगम विनिर्देशक
संरक्षित एक्सेस स्पेसियर उस इकाई के उपवर्गों के माध्यम से संस्थाओं तक पहुंच की अनुमति देता है जिसमें इकाई घोषित की गई है। इससे कोई फर्क नहीं पड़ता कि वर्ग एक ही पैकेज या अलग पैकेज में है, लेकिन जब तक एक संरक्षित इकाई तक पहुंचने की कोशिश कर रहा वर्ग इस वर्ग का एक उपवर्ग है, तब तक यह इकाई सुलभ है।
ध्यान दें कि एक वर्ग और एक इंटरफ़ेस संरक्षित नहीं किया जा सकता है यानी हम कक्षाओं और इंटरफेस में संरक्षित संशोधक लागू नहीं कर सकते हैं।
संरक्षित अभिगम आमतौर पर अभिभावक-बाल संबंधों में उपयोग किया जाता है।
निम्न कार्यक्रम जावा में संरक्षित एक्सेस संशोधक के उपयोग को प्रदर्शित करता है।
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
आउटपुट:
निजी प्रवेश संशोधक
Has निजी 'पहुंच संशोधक वह है जिसकी पहुंच स्तर सबसे कम है। जिन विधियों और क्षेत्रों को निजी घोषित किया गया है, वे कक्षा के बाहर सुलभ नहीं हैं। वे केवल उसी वर्ग के भीतर पहुँच सकते हैं जिसके पास ये निजी संस्थाएँ हैं।
ध्यान दें कि निजी संस्थाएं वर्ग के उपवर्गों को भी दिखाई नहीं देती हैं। एक निजी एक्सेस संशोधक जावा में एनकैप्सुलेशन सुनिश्चित करता है।
निजी एक्सेस संशोधक के संबंध में कुछ बिंदुओं पर ध्यान दिया जाना चाहिए।
- निजी एक्सेस संशोधक का उपयोग कक्षाओं और इंटरफेस के लिए नहीं किया जा सकता है।
- निजी संस्थाओं (विधियों और चर) का दायरा उस वर्ग तक सीमित है जिसमें उन्हें घोषित किया गया है।
- एक निजी निर्माता के साथ एक वर्ग मुख्य विधि की तरह किसी अन्य स्थान से कक्षा का एक ऑब्जेक्ट नहीं बना सकता है। (निजी निर्माणकर्ताओं के बारे में अधिक जानकारी हमारे पहले के ट्यूटोरियल में बताई गई है)।
नीचे दिए गए जावा प्रोग्राम में एक निजी एक्सेस मोडिफायर का उपयोग किया गया है।
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
आउटपुट:
उपरोक्त कार्यक्रम संकलन त्रुटि देता है क्योंकि हम कक्षा ऑब्जेक्ट का उपयोग करके निजी डेटा सदस्यों तक पहुंचने का प्रयास कर रहे हैं।
लेकिन निजी सदस्य चर तक पहुंचने के लिए एक विधि है। यह विधि जावा में गेटर्स और सेटर का उपयोग कर रही है। तो हम उसी वर्ग में एक सार्वजनिक पाने की विधि प्रदान करते हैं जिसमें निजी चर घोषित किया जाता है ताकि पाने वाला निजी चर का मूल्य पढ़ सके।
इसी तरह, हम एक सार्वजनिक सेटर विधि प्रदान करते हैं जो हमें निजी चर के लिए एक मूल्य निर्धारित करने की अनुमति देता है।
निम्न जावा प्रोग्राम जावा में निजी चर के लिए गेट्टर और सेटर विधियों के उपयोग को प्रदर्शित करता है।
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
आउटपुट:
उपरोक्त कार्यक्रम में एक निजी स्ट्रिंग चर के साथ एक वर्ग है। हम एक सार्वजनिक getName सदस्य विधि प्रदान करते हैं जो निजी चर का मान लौटाता है। हम कक्षा में एक सार्वजनिक सेटनाम विधि भी प्रदान करते हैं जो एक स्ट्रिंग को एक तर्क के रूप में लेता है और इसे निजी चर में असाइन करता है।
चूंकि दोनों विधियां सार्वजनिक हैं, इसलिए हम कक्षा की वस्तु का उपयोग करके उन्हें आसानी से प्राप्त कर सकते हैं। इस तरह हम उस संकलन त्रुटि को दूर कर सकते हैं जो हर बार जब हम कक्षा के निजी डेटा सदस्यों तक पहुंचने का प्रयास करते हैं तो पॉप अप करते हैं।
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में कितने एक्सेस मॉडिफायर हैं?
उत्तर: जावा चार संशोधक प्रदान करता है अर्थात् डिफ़ॉल्ट, सार्वजनिक, संरक्षित और निजी।
Q # 2) जावा में एक्सेस मॉडिफायर्स और नॉन-एक्सेस मॉडिफायर क्या हैं?
उत्तर: एक्सेस मॉडिफ़ायर एक प्रोग्राम या एक विधि या एक चर या एक निर्माता की तरह दृश्यता या गुंजाइश को परिभाषित करते हैं। गैर-पहुंच संशोधक एक इकाई के व्यवहार को परिभाषित करते हैं। उदाहरण के लिए, एक सिंक्रनाइज़ विधि या ब्लॉक इंगित करता है कि यह एक मल्टीथ्रेडिंग वातावरण में काम कर सकता है, एक अंतिम चर इंगित करता है कि यह एक स्थिर है।
क्यू # 3) एक्सेस स्पेसिफिकर्स क्यों महत्वपूर्ण हैं?
उत्तर: संशोधक निर्दिष्ट करते हैं कि कौन सा वर्ग अन्य वर्गों या विधियों या चर तक पहुंच सकता है। एक्सेस स्पेसिअर्स का उपयोग करके हम विभिन्न वर्गों, विधियों, कंस्ट्रक्टर्स, और वैरिएबल्स की पहुंच को सीमित कर सकते हैं और जावा एंटिटीज के एनकैप्सुलेशन और पुन: प्रयोज्य को भी सुनिश्चित करते हैं।
Q # 4) क्लास के लिए कौन से संशोधक का उपयोग नहीं किया जाता है?
उत्तर: संरक्षित और निजी संशोधक एक वर्ग के लिए उपयोग नहीं किए जाते हैं।
Q # 5) नॉन-एक्सेस मॉडिफायर क्या हैं?
उत्तर: संशोधक जो वर्ग, विधि या चर जैसी संस्थाओं के व्यवहार को परिभाषित करते हैं, जिसके साथ वे जुड़े हुए हैं, गैर-पहुंच वाले संशोधक हैं। जैसा कि नाम से पता चलता है कि वे पहुँच निर्दिष्ट नहीं करते हैं। जावा विभिन्न नॉन-एक्सेस मॉडिफायर्स प्रदान करता है जैसे स्थिर, अंतिम, सिंक्रनाइज़, अस्थिर, सार, आदि।
दृश्यता संशोधक पर अधिक
जावा वेरिएबल, मेथड्स और कंस्ट्रक्टर्स को एक्सेस करने के लिए कई मॉडिफायर्स प्रदान करता है।
जावा में 4 प्रकार के पहुँच चर हैं:
- निजी
- जनता
- चूक
- संरक्षित
# 1) निजी
यदि एक चर को निजी घोषित किया जाता है, तो इसे कक्षा में पहुँचा जा सकता है। यह चर वर्ग के बाहर उपलब्ध नहीं होगा। इसलिए, बाहरी सदस्य निजी सदस्यों तक नहीं पहुँच सकते।
ध्यान दें: कक्षाएं और इंटरफेस निजी नहीं हो सकते।
# 2) सार्वजनिक
सार्वजनिक संशोधक के साथ तरीके / चर परियोजना में अन्य सभी वर्गों द्वारा पहुँचा जा सकता है।
# 3) संरक्षित
यदि एक चर को संरक्षित घोषित किया जाता है, तो इसे उसी संकुल वर्गों और किसी भी अन्य संकुल के उप-वर्ग के भीतर पहुँचा जा सकता है।
ध्यान दें: संरक्षित एक्सेस संशोधक का उपयोग कक्षा और इंटरफेस के लिए नहीं किया जा सकता है।
# 4) डिफ़ॉल्ट एक्सेस संशोधक
यदि कोई चर / विधि किसी भी पहुँच संशोधक खोजशब्द के बिना परिभाषित की जाती है, तो वह एक डिफ़ॉल्ट संशोधक पहुँच होगी।
एक्सेस मॉडिफायर | दृश्यता |
---|---|
जनता | सभी वर्गों के लिए दृश्यमान है। |
संरक्षित | पैकेज के साथ कक्षाओं और अन्य पैकेज के उपवर्गों के लिए दृश्यमान। |
कोई पहुँच संशोधक (डिफ़ॉल्ट) | पैकेज के साथ कक्षाओं के लिए दृश्यमान |
निजी | कक्षा में दिखाई देता है। यह कक्षा के बाहर सुलभ नहीं है। |
डेमो क्लास:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
किसी अन्य कक्षा में कक्षा के सदस्यों तक पहुँचना:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
आउटपुट:
सार्वजनिक सदस्यों तक पहुंच:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
आउटपुट:
पुलिसमैन
महत्वपूर्ण बिंदु:
- एक्सेस विनिर्देशक वर्ग की दृश्यता को परिभाषित करते हैं।
- यदि कोई कीवर्ड उल्लेखित नहीं है, तो वह डिफ़ॉल्ट एक्सेस संशोधक है।
- जावा में चार संशोधक सार्वजनिक, निजी, संरक्षित और डिफ़ॉल्ट शामिल हैं।
- निजी और संरक्षित कीवर्ड का उपयोग कक्षाओं और इंटरफेस के लिए नहीं किया जा सकता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने जावा में एक्सेस मॉडिफायर्स को विस्तार से बताया। जावा चार प्रकार के एक्सेस मॉडिफ़ायर या दृश्यता विनिर्देशक प्रदान करता है यानी डिफ़ॉल्ट, सार्वजनिक, निजी और संरक्षित। डिफ़ॉल्ट संशोधक के पास कोई भी कीवर्ड नहीं होता है।
जब किसी वर्ग या विधि या चर में इसके साथ कोई एक्सेस स्पेसियर नहीं जुड़ा होता है, तो हम यह मानते हैं कि यह डिफ़ॉल्ट एक्सेस है। सार्वजनिक पहुंच संशोधक वर्ग या पैकेज के अंदर या बाहर हर चीज तक पहुंच की अनुमति देता है। सार्वजनिक संशोधक के मामले में पहुंच की कोई सीमा नहीं है।
संरक्षित दृश्यता निर्दिष्ट करने वाला केवल उस वर्ग को विरासत में प्राप्त करने की अनुमति देता है जिसमें संरक्षित सदस्य घोषित किए जाते हैं। निजी एक्सेस मॉडिफ़ायर निजी डेटा सदस्यों के साथ कम से कम पहुँच को केवल कक्षा के भीतर पहुँच योग्य बनाता है।
संशोधक वर्ग, निर्माणकर्ता, विधियों और चर जैसे डेटा सदस्यों के दायरे को सीमित करते हैं और सीमा को परिभाषित करते हैं कि कौन से वर्ग या पैकेज उन तक पहुंच सकते हैं। पहुँच विनिर्देशक जावा में एन्कैप्सुलेशन और पुन: प्रयोज्य को प्रोत्साहित करते हैं। ध्यान दें कि वर्गों और इंटरफ़ेस को संरक्षित या निजी नहीं किया जा सकता है।
कंप्यूटर में ऑपरेटिंग सिस्टम क्या है
=> स्क्रैच से जावा सीखने के लिए यहां जाएं।
अनुशंसित पाठ
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा प्रोग्रामिंग भाषा का परिचय - वीडियो ट्यूटोरियल
- Java SWING Tutorial: कंटेनर, कंपोनेंट्स एंड इवेंट हैंडलिंग
- स्ट्रिंग स्ट्रिंग बफर और स्ट्रिंग बिल्डर ट्यूटोरियल के साथ जावा स्ट्रिंग
- जावा परिनियोजन: जावा जार फ़ाइल का निर्माण और निष्पादन
- जावा वर्चुअल मशीन: जावा एप्लीकेशन चलाने में JVM कैसे मदद करता है
- जावा कलेक्शंस फ्रेमवर्क (JCF) ट्यूटोरियल