1. एक्सेस संशोधक
प्रत्येक विधि से पहले, प्रोग्रामर तथाकथित एक्सेस संशोधक निर्दिष्ट कर सकते हैं। इनमें निम्नलिखित कीवर्ड शामिल हैं: public
, protected
, private
.
ये एक्सेस संशोधक आपको अन्य वर्गों की पहुंच को एक विधि तक सीमित करने देते हैं।
उदाहरण के लिए, यदि आप private
विधि घोषणा से पहले कीवर्ड लिखते हैं, तो विधि केवल उसी वर्ग से बुलाई जा सकती है जिसमें यह घोषित किया गया है। कीवर्ड public
किसी भी वर्ग के किसी भी तरीके से चिह्नित विधि तक पहुंच की अनुमति देता है।
कुल 3 ऐसे संशोधक हैं, लेकिन एक विधि में 4 प्रकार की पहुंच है। ऐसा इसलिए है क्योंकि एक्सेस संशोधक की अनुपस्थिति का भी कुछ अर्थ है।
से पहुंच... | ||||
---|---|---|---|---|
संशोधक | कोई भी वर्ग | बाल वर्ग | इसका पैकेज | इसका वर्ग |
public |
हाँ | हाँ | हाँ | हाँ |
protected |
नहीं | हाँ | हाँ | हाँ |
कोई संशोधक नहीं | नहीं | नहीं | हाँ | हाँ |
private |
नहीं | नहीं | नहीं | हाँ |
1. public
संशोधक
संशोधक के साथ चिह्नित एक विधि (या चर, या वर्ग) को प्रोग्राम में कहीं से भीpublic
एक्सेस किया जा सकता है । यह खुलेपन की उच्चतम डिग्री है — इसमें कोई प्रतिबंध नहीं है।
2. private
संशोधक
संशोधक के साथ चिह्नित एक विधि (या चर, या वर्ग) को private
केवल उसी वर्ग से पहुँचा जा सकता है जहाँ इसे घोषित किया गया है । अन्य सभी वर्गों के लिए चिह्नित विधि (या चर) अदृश्य है। यह ऐसा है जैसे यह मौजूद नहीं है। यह प्रतिबंध का उच्चतम स्तर है — केवल उसका अपना वर्ग।
3. कोई संशोधक नहीं (डिफ़ॉल्ट संशोधक)
यदि कोई विधि (या चर) किसी भी संशोधक के साथ चिह्नित नहीं है, तो इसे 'डिफ़ॉल्ट संशोधक' माना जाता है। उस संशोधक के साथ चर या विधियाँ (अर्थात बिना किसी के) पैकेज में सभी वर्गों के लिए दृश्यमान हैं जिसमें वे घोषित किए गए हैं । और केवल उन्हें। इस संशोधक को कभी-कभी कहा जाता है package-private
, यह संकेत देते हुए कि चर और विधियों तक पहुंच पूरे पैकेज के लिए खुली है जिसमें उनकी कक्षा स्थित है।
4. protected
संशोधक
यदि किसी विधि को protected
संशोधक के साथ चिह्नित किया गया है, तो उसे उसी वर्ग, उसी पैकेज और वंशजों से पहुँचा जा सकता है (वे वर्ग जो उस वर्ग को प्राप्त करते हैं जिसमें विधि घोषित की गई है)। हम जावा कोर खोज में इस विषय का अधिक विस्तार से विश्लेषण करेंगे।
public
जब तक आप जावा सिंटैक्स खोज के अंत तक नहीं पहुंच जाते, तब तक आप अपने सभी तरीकों (साथ ही साथ अपने सभी वर्ग और वर्ग चर) पर संशोधक का उपयोग कर सकते हैं । जब हम सक्रिय रूप से OOP सीखना शुरू करेंगे तो आपको अन्य संशोधक की आवश्यकता होगी।
एक्सेस संशोधक की आवश्यकता क्यों है?
वे एक ही समय में दसियों और सैकड़ों प्रोग्रामरों द्वारा लिखी गई बड़ी परियोजनाओं के लिए आवश्यक हो जाते हैं।
कभी-कभी ऐसी परिस्थितियां होती हैं जब एक प्रोग्रामर अत्यधिक बड़ी विधि को भागों में विभाजित करना चाहता है और कोड के भाग को सहायक विधियों में स्थानांतरित करना चाहता है। लेकिन साथ ही, वह नहीं चाहता कि अन्य प्रोग्रामर इन सहायक विधियों को कॉल करें, क्योंकि संबंधित कोड सही तरीके से काम नहीं कर सकता है।
इसलिए वे इन एक्सेस मॉडिफायर्स के साथ आए। यदि आप एक सहायक विधि को निजी शब्द के साथ चिह्नित करते हैं , तो आपकी कक्षा के अलावा कोई भी कोड आपकी सहायक विधि को नहीं देख सकता है।
2. static
खोजशब्द
कीवर्ड static
एक विधि को स्थिर बनाता है। हम बाद में देखेंगे कि इसका क्या अर्थ है। अभी के लिए, स्थैतिक तरीकों के बारे में कुछ तथ्य याद रखें।
तथ्य 1। एक स्थिर विधि किसी वस्तु से जुड़ी नहीं है , बल्कि उस वर्ग से संबंधित है जिसमें इसे घोषित किया गया है। स्थैतिक विधि को कॉल करने के लिए, आपको लिखना होगा:
ClassName.MethodName()
स्थैतिक तरीकों के उदाहरण:
कक्षा का नाम | स्थैतिक विधि का नाम | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
यदि आप स्थिर विधि को उसकी कक्षा के भीतर से कॉल करते हैं, तो एक स्थिर विधि के नाम से पहले वर्ग का नाम छोड़ा जा सकता है । यही कारण है कि आपको बुलाए जाने वाले प्रत्येक स्थिर तरीकों के नाम से पहले लिखने की आवश्यकता नहीं है ।Solution
तथ्य 2। एक स्थैतिक विधि अपने स्वयं के वर्ग के गैर-स्थैतिक तरीकों तक नहीं पहुँच सकती है । एक स्थिर विधि केवल स्थैतिक विधियों तक ही पहुँच सकती है। नतीजतन, हम उन सभी विधियों की घोषणा करते हैं जिन्हें हम main
स्थैतिक विधि से कॉल करना चाहते हैं।
क्यों? जब आप OOP सीखना शुरू करेंगे और यह समझेंगे कि स्थैतिक तरीके कैसे काम करते हैं, तो आप इस प्रश्न का उत्तर स्वयं दे पाएंगे।
3. throws
खोजशब्द
एक और कीवर्ड है जिसे आपने शायद एक विधि घोषणा- throws
कीवर्ड में देखा है। एक्सेस संशोधक और static
कीवर्ड के विपरीत, यह कीवर्ड विधि पैरामीटर के बाद रखा गया है:
public static Type name(parameters) throws Exception
{
method body
}
जब हम अपवादों का अध्ययन करेंगे तो हम इसके सटीक अर्थ पर थोड़ी देर बाद विचार करेंगे।
लेकिन इसे सतही रूप से छूने के लिए, हम कह सकते हैं कि थ्रो कीवर्ड के साथ चिह्नित एक विधि त्रुटियों (अपवादों) को फेंक सकती है, जिसका अर्थ है वर्ग Exception
(और कक्षाएं जो इसे प्राप्त करती हैं) के उदाहरण। यदि एक कक्षा में कई अलग-अलग प्रकार की त्रुटियाँ हो सकती हैं, तो आपको उनमें से प्रत्येक को अल्पविराम से अलग करके सूचीबद्ध करने की आवश्यकता है।
4. main
विधि
वह रेखा जहाँ एक विधि घोषित की जाती है, जिसमें सभी संशोधक होते हैं, यह प्रभावित करेगा कि इस विधि को अन्य वर्गों और विधियों से कैसे कहा जाता है। यह परिणाम के प्रकार को प्रभावित करता है कि विधि वापस आ जाएगी और यह इंगित करती है कि चलने के दौरान कौन सी त्रुटियां संभव हैं।
ऐसी रेखा को विधि घोषणा कहा जाता है और इसमें निम्नलिखित सामान्य प्रारूप होते हैं:
access modifier static Type name(parameters) throws exceptions
जहां से , , , या कुछ भी नहीं access modifiers
बदला गया है ;public
protected
private
यदि विधि स्थिर है, तो static
कीवर्ड प्रकट होता है (यह गैर स्थैतिक तरीकों के लिए अनुपस्थित है)
Type
वापसी मूल्य का प्रकार है ( void
यदि कोई परिणाम नहीं है)
अब आप शायद समझ गए होंगे कि विधि की घोषणा में सभी खोजशब्दों का क्या अर्थ है main
:
public static void main(String[] args) throws Exception
किसी भी वर्ग से विधि तक पहुंच main()
संभव है, जैसा कि public
कीवर्ड द्वारा दर्शाया गया है।
विधि स्थिर है, इसलिए इसे स्पष्ट रूप से कहा जा सकता है Solution.main()
।
विधि main
कोई परिणाम नहीं लौटाती है। वापसी प्रकार है void
(कोई प्रकार नहीं)।
विधि main
तर्क (!) लेती है: तारों की एक सरणी। और पैरामीटर का नाम args
हमारे दिमाग को 'तर्क' सुझाता है। जब प्रोग्राम शुरू होता है, तो आप इसे आर्ग्युमेंट पास कर सकते हैं - स्ट्रिंग्स की एक सरणी। वे विधि args
में सरणी में निहित होंगे ।main()
विधि Exception
में (या उसके वंशज) जैसी अनहेल्ड त्रुटियाँ हो सकती हैं।main()
GO TO FULL VERSION