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 बदला गया है ;publicprotectedprivate

यदि विधि स्थिर है, तो staticकीवर्ड प्रकट होता है (यह गैर स्थैतिक तरीकों के लिए अनुपस्थित है)

Typeवापसी मूल्य का प्रकार है ( voidयदि कोई परिणाम नहीं है)

अब आप शायद समझ गए होंगे कि विधि की घोषणा में सभी खोजशब्दों का क्या अर्थ है main:

public static void main(String[] args) throws Exception
mainविधि की घोषणा करना

किसी भी वर्ग से विधि तक पहुंच main()संभव है, जैसा कि publicकीवर्ड द्वारा दर्शाया गया है।

विधि स्थिर है, इसलिए इसे स्पष्ट रूप से कहा जा सकता है Solution.main()

विधि mainकोई परिणाम नहीं लौटाती है। वापसी प्रकार है void(कोई प्रकार नहीं)।

विधि mainतर्क (!) लेती है: तारों की एक सरणी। और पैरामीटर का नाम argsहमारे दिमाग को 'तर्क' सुझाता है। जब प्रोग्राम शुरू होता है, तो आप इसे आर्ग्युमेंट पास कर सकते हैं - स्ट्रिंग्स की एक सरणी। वे विधि args में सरणी में निहित होंगे ।main()

विधि Exceptionमें (या उसके वंशज) जैसी अनहेल्ड त्रुटियाँ हो सकती हैं।main()