कोडजिम युनिव्हर्सिटी कोर्सचा एक भाग म्हणून मार्गदर्शकासह व्याख्यान स्निपेट. पूर्ण अभ्यासक्रमासाठी साइन अप करा.


"अभिवादन, अमिगो! मी ऐकले आहे की तुम्हाला आधीच पद्धतींची चांगली समज आहे?"

"हाय, ऋषी. होय, मी त्या शिक्षकाच्या युक्तीने माझा मार्ग आधीच कापला आहे. मी म्हणेन की ते इतके वाईट नव्हते, परंतु तू मला सांगशील, 'नाही, नाही! तुला काहीही समजले नाही. ''

"तुम्ही स्पष्टपणे काही शिक्षकांसोबत गप्पा मारण्यात बराच वेळ घालवत आहात, कदाचित डिएगोसोबत. तरीही... मला अजूनही आशा आहे की तुम्हाला पद्धती चांगल्या प्रकारे समजल्या असतील. शेवटी, आज मी तुम्हाला काही जादूचे शब्द शिकवणार आहे जे पद्धतींचे वर्णन करण्यात मदत करतात. प्रभावाचे क्षेत्र."

"गोचर वाटतंय."

"खरं तर, हे सर्व सोपे आहे. प्रत्येक पद्धतीपूर्वी, प्रोग्रामर तथाकथित ऍक्सेस मॉडिफायर निर्दिष्ट करू शकतात. यामध्ये खालील कीवर्ड समाविष्ट आहेत: public, protected, private.

"हे ऍक्सेस मॉडिफायर तुम्हाला इतर क्लासेसचा ऍक्सेस एका पद्धतीवर प्रतिबंधित करू देतात.

"उदाहरणार्थ, जर तुम्ही privateमेथड डिक्लेरेशनच्या आधी कीवर्ड लिहिला, तर मेथड फक्त त्याच क्लासमधून कॉल केली जाऊ शकते ज्यामध्ये ती घोषित केली गेली आहे. कीवर्ड publicकोणत्याही क्लासच्या कोणत्याही पद्धतीमधून चिन्हांकित पद्धतीमध्ये प्रवेश करण्यास अनुमती देतो.

असे एकूण 3 मॉडिफायर आहेत, परंतु एका पद्धतीमध्ये प्रवेशाचे 4 प्रकार आहेत. हे असे आहे कारण ऍक्सेस मॉडिफायरच्या अनुपस्थितीचा अर्थ काहीतरी आहे. येथे एक संपूर्ण सारणी आहे:

येथून प्रवेश...
सुधारक कोणताही वर्ग बाल वर्ग त्याचे पॅकेज त्याचा वर्ग
public होय होय होय होय
protected नाही होय होय होय
सुधारक नाही नाही नाही होय होय
private नाही नाही नाही होय

"आणि येथे ऍक्सेस मॉडिफायर्सचे संपूर्ण स्पष्टीकरण आहे:

1. publicसुधारक

मॉडिफायरने चिन्हांकित केलेली पद्धत (किंवा व्हेरिएबल किंवा क्लास) प्रोग्राममध्ये कुठूनहीpublic ऍक्सेस केली जाऊ शकते . हे मोकळेपणाचे सर्वोच्च प्रमाण आहे - कोणतेही निर्बंध नाहीत.

2. privateसुधारक

मॉडिफायरने चिन्हांकित केलेली पद्धत (किंवा व्हेरिएबल किंवा क्लास) फक्त त्याच वर्गातूनprivate ऍक्सेस केली जाऊ शकते जिथे ती घोषित केली आहे . इतर सर्व वर्गांसाठी, चिन्हांकित पद्धत (किंवा चल) अदृश्य आहे. जणू ते अस्तित्वातच नाही. हे निर्बंधाचे सर्वोच्च स्तर आहे — फक्त त्याचा स्वतःचा वर्ग.

3. कोणतेही सुधारक नाही (डीफॉल्ट सुधारक)

जर एखादी पद्धत (किंवा व्हेरिएबल) कोणत्याही सुधारकाने चिन्हांकित केलेली नसेल, तर ती 'डीफॉल्ट सुधारक' मानली जाते. त्या मॉडिफायरसह व्हेरिएबल्स किंवा पद्धती (म्हणजे काहीही नसताना) ज्या पॅकेजमध्ये घोषित केल्या आहेत त्या सर्व वर्गांना दृश्यमान आहेत . आणि फक्त त्यांना. या सुधारकाला कधीकधी असे देखील म्हटले जाते package-private, ज्यामध्ये व्हेरिएबल्स आणि पद्धतींचा प्रवेश संपूर्ण पॅकेजसाठी खुला आहे ज्यामध्ये त्यांचा वर्ग आहे.

4. protectedसुधारक

जर एखादी पद्धत मॉडिफायरने चिन्हांकित केली असेल protected, तर ती समान वर्ग, समान पॅकेज आणि वंशज (ज्या वर्गात पद्धत घोषित केली आहे त्या वर्गाचा वारसा घेणारे वर्ग) मधून प्रवेश केला जाऊ शकतो. आम्ही जावा कोअर क्वेस्टमध्ये या विषयाचे अधिक तपशीलवार विश्लेषण करू."

"रंजक आहे, परंतु मला खात्री नाही की मी हे सुधारक त्वरित सर्व योग्य ठिकाणी ठेवू शकेन की नाही.

"तुम्ही तिथे हळूहळू पोहोचाल. वेळेपूर्वी काळजी करण्याची गरज नाही. तुम्ही Java सिंटॅक्स शोधाच्या शेवटी पोहोचेपर्यंत, तुम्ही publicतुमच्या सर्व पद्धतींवर (तसेच वर्ग आणि उदाहरण व्हेरिएबल्स) सुधारक वापरू शकता. तुम्हाला याची आवश्यकता असेल. जेव्हा आम्ही सक्रियपणे OOP शिकू लागतो तेव्हा इतर सुधारक."

"ऍक्सेस मॉडिफायर्सची आवश्यकता का आहे हे तुम्ही अधिक तपशीलवार सांगू शकता?"

"ते एकाच वेळी दहापट आणि शेकडो प्रोग्रामरद्वारे लिहिलेल्या मोठ्या प्रकल्पांसाठी आवश्यक बनतात.

"कधीकधी अशी परिस्थिती असते जेव्हा एखाद्या प्रोग्रामरला खूप मोठ्या पद्धतीचे भागांमध्ये विभाजन करायचे असते आणि कोडचा काही भाग हेल्पर पद्धतींमध्ये हलवायचा असतो. परंतु त्याच वेळी, त्याला किंवा तिला इतर प्रोग्रामरनी या मदतनीस पद्धतींना कॉल करू इच्छित नाही, कारण संबंधित कोड योग्यरित्या कार्य करू शकत नाही."

"म्हणून ते हे ऍक्सेस मॉडिफायर घेऊन आले आहेत. जर तुम्ही खाजगी या शब्दाने मदतनीस पद्धत चिन्हांकित केली , तर तुमच्या वर्गाव्यतिरिक्त कोणताही कोड तुमची मदतनीस पद्धत पाहू शकणार नाही."

"मला वाटते मला समजले आहे."

staticकीवर्ड

"आणखी एक मनोरंजक कीवर्ड आहे. तो आहे static. आश्चर्याची गोष्ट नाही की, तो पद्धतींना स्थिर करतो."

"म्हणजे काय?"

"मी तुम्हाला याबद्दल नंतर अधिक सांगेन. काळजी करू नका. सध्यासाठी, फक्त स्थिर पद्धतींबद्दल काही तथ्ये लक्षात ठेवण्याचा प्रयत्न करा.

वस्तुस्थिती 1. स्टॅटिक पद्धत कोणत्याही ऑब्जेक्टशी जोडलेली नसते, परंतु त्याऐवजी ती ज्या वर्गात घोषित केली जाते त्या वर्गाशी संबंधित असते. स्थिर पद्धत कॉल करण्यासाठी, तुम्हाला लिहावे लागेल:

ClassName.MethodName()

स्थिर पद्धतींची उदाहरणे:

वर्गाचे नाव स्थिर पद्धतीचे नाव
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

स्टॅटिक मेथडच्या नावापुढील क्लासचे नाव वगळले जाऊ शकते जर तुम्ही स्टॅटिक मेथडला त्याच्या क्लासमधून कॉल केल्यास. म्हणूनच तुम्हाला कॉल केलेल्या प्रत्येक स्टॅटिक पद्धतीच्या नावापुढे लिहिण्याची गरज नाही.Solution

वस्तुस्थिती 2. एक स्थिर पद्धत त्याच्या स्वतःच्या वर्गाच्या नॉन-स्टॅटिक पद्धतींमध्ये प्रवेश करू शकत नाही. स्थिर पद्धत केवळ स्थिर पद्धतींमध्ये प्रवेश करू शकते. परिणामी, आम्ही mainस्टॅटिक पद्धतीवरून कॉल करू इच्छित असलेल्या सर्व पद्धती घोषित करतो."

"अस का?"

"जेव्हा तुम्ही OOP शिकण्यास सुरुवात कराल आणि स्थिर पद्धती कशा कार्य करतात हे समजून घ्याल तेव्हा तुम्ही स्वतः या प्रश्नाचे उत्तर द्याल. तोपर्यंत, फक्त माझ्यावर विश्वास ठेवा.

throwsकीवर्ड

"तुम्ही कदाचित मेथड डिक्लेरेशनमध्ये पाहिलेला आणखी एक कीवर्ड आहे — कीवर्ड throws. ऍक्सेस मॉडिफायर्स आणि कीवर्डच्या विपरीत , हा कीवर्ड मेथड पॅरामीटर्सनंतर ठेवलाstatic जातो :

public static Type name(parameters) throws Exception
{
  method body
}

"आणि त्याचा अर्थ काय?"

"पुन्हा एकदा मला तुम्हाला सांगायचे आहे की जेव्हा आम्ही अपवादांचा अभ्यास करतो (स्तर 15 मध्ये).

परंतु त्यावर वरवरचा स्पर्श करण्यासाठी, आपण असे म्हणू शकतो की कीवर्डसह चिन्हांकित केलेली पद्धत throwsत्रुटी (अपवाद) टाकू शकते, म्हणजे वर्गाची उदाहरणे Exception(आणि त्याचा वारसा घेणारे वर्ग). जर वर्गात वेगवेगळ्या प्रकारच्या त्रुटी उद्भवू शकतात, तर तुम्हाला त्या प्रत्येकाची स्वल्पविरामाने विभक्त केलेली यादी करणे आवश्यक आहे."

"गूढ आणि अनाकलनीय वाटतंय! मला लेव्हल 14 ची वाट पाहावी लागेल."

मुख्य पद्धत

"आता मुख्य पद्धतीकडे जवळून बघूया. तुम्हाला आधीच समजले आहे की, ज्या ओळीत पद्धत घोषित केली जाते, ज्यामध्ये सर्व सुधारक असतात, ती पद्धत इतर वर्ग आणि पद्धतींमधून कशी कॉल केली जाते यावर परिणाम करते. परिणामी पद्धत परत येईल आणि ती चालत असताना कोणत्या त्रुटी शक्य आहेत हे सूचित करते.

"अशा ओळीला मेथड डिक्लेरेशन म्हणतात आणि त्याचे खालील सामान्य स्वरूप आहे:

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()त्याच्या कंसात काय आहे?"

"हम्म... असे दिसून आले की mainपद्धत वितर्क घेते (!). ते स्ट्रिंगच्या अ‍ॅरेप्रमाणे पास केले जातात."

"ते बरोबर आहे. आणि पॅरामीटरचे नाव argsआपल्या मनाला 'वितर्क' सुचवते. जेव्हा प्रोग्राम सुरू होतो, तेव्हा तुम्ही ते वितर्क पास करू शकता - स्ट्रिंगचा अॅरे. ते argsपद्धतीतील अॅरेमध्ये समाविष्ट केले जातील main()."

"अरे! मी पहिल्यांदा पाहिलं तेव्हा मला याबद्दल आश्चर्य वाटलं, पण नंतर मला याची सवय झाली आणि विचार न करता पॅरामीटर लिस्ट लिहायला सुरुवात केली."

"आम्ही सर्वजण तिथे आलो आहोत. शेवटी, Exceptionपद्धतीमध्ये (किंवा त्याचे वंशज) सारख्या न हाताळलेल्या त्रुटी येऊ शकतात main(). आम्हाला हे माहित आहे की throws Exceptionघोषणेच्या भागाबद्दल धन्यवाद."

"धन्यवाद, ऋषी. मला सर्व काही समजले नाही, पण हे मनोरंजक आहे."

"तुमचे स्वागत आहे. हळुहळु तुम्हाला हे सर्व सूक्ष्म मुद्दे समजतील, मला खात्री आहे."