पद्धत ओव्हरलोडिंग
आमचा आजचा नवीन आणि मनोरंजक विषय म्हणजे मेथड ओव्हरलोडिंग . सावधगिरी बाळगा — मेथड ओव्हरलोडिंगचा मेथड ओव्हरराइडिंगमध्ये गोंधळ होऊ नये.
ओव्हरराइडिंगच्या विपरीत, ओव्हरलोडिंग हे अतिशय सोपे ऑपरेशन आहे. हे प्रत्यक्षात पद्धतींवरील ऑपरेशन नाही, जरी काहीवेळा याला पॅरामेट्रिक पॉलिमॉर्फिझम या भयंकर शब्दाने संबोधले जाते .
येथे समस्या अशी आहे की वर्गातील सर्व पद्धतींना अद्वितीय नावे असणे आवश्यक आहे. बरं, ते पूर्णपणे अचूक नाही. बरं, अधिक अचूकपणे, ते अजिबात अचूक नाही. पद्धतीचे नाव अद्वितीय असणे आवश्यक नाही. पद्धतीचे नाव आणि पद्धतीच्या पॅरामीटर्सचे प्रकार युनिक असणे आवश्यक आहे . हे युनियन पद्धत स्वाक्षरी म्हणून ओळखले जाते
उदाहरणे:
कोड | वर्णन |
---|---|
|
याची परवानगी आहे. दोन पद्धतींना अद्वितीय नावे आहेत. |
|
आणि हे देखील. दोन पद्धतींना अद्वितीय नावे (स्वाक्षरी) आहेत. |
|
पद्धती अजूनही अद्वितीय आहेत |
|
पण याला परवानगी नाही . पद्धती अद्वितीय नाहीत . जरी ते भिन्न प्रकार परत करतात. |
|
पण तुम्ही हे करू शकता . पद्धतीचे मापदंड अद्वितीय आहेत |
स्वाक्षरीमध्ये पद्धतीचे नाव आणि पॅरामीटर प्रकार समाविष्ट आहेत . त्यामध्ये पद्धतीचा परतावा प्रकार आणि पॅरामीटर नावे समाविष्ट नाहीत . वर्गात समान स्वाक्षरी असलेल्या दोन पद्धती असू शकत नाहीत - कोणती कॉल करायची हे कंपाइलरला कळणार नाही.
पॅरामीटर नावे काही फरक पडत नाहीत , कारण ते संकलनादरम्यान गमावले जातात. एकदा पद्धत संकलित केल्यानंतर, फक्त त्याचे नाव आणि पॅरामीटर प्रकार ओळखले जातात. रिटर्न प्रकार गमावला नाही, परंतु पद्धतीचा निकाल कशासाठीही नियुक्त केला जाणे आवश्यक नाही, म्हणून ते स्वाक्षरीमध्ये देखील समाविष्ट केलेले नाही.
OOP तत्त्वांनुसार , बहुरूपता एकाच इंटरफेसच्या मागे भिन्न अंमलबजावणी लपवत आहे. जेव्हा आपण System.out.println()
पद्धत कॉल करतो, उदाहरणार्थ, कोणत्या वितर्क पास केले जातात त्यानुसार वेगवेगळ्या पद्धती कॉल केल्या जातात. हे कृतीत बहुरूपता आहे.
म्हणूनच एकाच वर्गात समाविष्ट असलेल्या समान नावांच्या वेगवेगळ्या पद्धती बहुरूपतेचे कमकुवत स्वरूप मानले जातात.
GO TO FULL VERSION