जावा मेथड ओवरलोडिंग की अनुमति देता है, जहां एक ही क्लास की दो या दो से अधिक विधियां एक ही नाम साझा कर सकती हैं।
विधि ओवरलोडिंग तब होती है जब विधि पैरामीटर घोषणाएं भिन्न होती हैं।
मेथड ओवरलोडिंग जावा में बहुरूपता को लागू करने का एक तरीका है।
किसी विधि को ओवरलोड करने के लिए, उसके विभिन्न संस्करण घोषित करना आवश्यक है।
कंपाइलर पैरामीटर के आधार पर स्वचालित रूप से सही विधि का चयन करता है।
एक महत्वपूर्ण प्रतिबंध: ओवरलोडेड तरीकों में प्रकार और/या मापदंडों की संख्या में भिन्नता होनी चाहिए, न कि केवल रिटर्न प्रकार में।
ओवरलोडेड विधियां उनके रिटर्न प्रकारों में भी भिन्न हो सकती हैं, लेकिन सही विधि चुनने के लिए पैरामीटर आवश्यक हैं।
जब एक अतिभारित विधि को कॉल किया जाता है, तो तर्कों से मेल खाने वाले पैरामीटर वाले संस्करण को निष्पादित किया जाता है।
OvlDemo() विधि को अलग-अलग हस्ताक्षरों के साथ चार बार ओवरलोड किया गया है:
पहला संस्करण: कोई पैरामीटर नहीं।
दूसरा संस्करण: एक पूर्णांक पैरामीटर के साथ।
तीसरा संस्करण: दो पूर्णांक मापदंडों के साथ।
चौथा संस्करण: दो दोहरे मापदंडों के साथ।
ovlDemo() के पहले दो संस्करण शून्य लौटाते हैं, जबकि अंतिम दो एक मान लौटाते हैं।
मेथड ओवरलोडिंग रिटर्न प्रकार से प्रभावित नहीं होती है।
केवल रिटर्न प्रकार द्वारा विभेदित हस्ताक्षरों के साथ ovlDemo() के दोनों संस्करणों का उपयोग करने का प्रयास एक त्रुटि का कारण बनेगा।
रिटर्न प्रकारों में अंतर जावा में विधि ओवरलोडिंग के लिए पर्याप्त नहीं है।
उदाहरण से पता चलता है कि एक ही हस्ताक्षर वाली दो विधियां, यहां तक कि विभिन्न रिटर्न प्रकारों के साथ, एक त्रुटि का कारण बनती हैं।
जावा स्वचालित प्रकार के रूपांतरण करता है, और ये रूपांतरण अतिभारित तरीकों के मापदंडों पर भी लागू होते हैं।
उदाहरण f() विधि के दो संस्करण दिखाता है: एक int पैरामीटर के साथ और दूसरा डबल पैरामीटर के साथ।
प्रकार बाइट और शॉर्ट के मान स्वचालित रूप से f(int) विधि को कॉल करके int में परिवर्तित हो जाते हैं।
एफ(डबल) विधि को कॉल करके फ्लोट मान को डबल में परिवर्तित किया जाता है।
स्वचालित रूपांतरण तब होता है जब पैरामीटर और तर्क के बीच कोई सीधा मिलान नहीं होता है।
बाइट पैरामीटर के साथ f() का एक संस्करण जोड़ने से मूल्यों को संभालने का तरीका बदल सकता है।
वर्तमान संस्करण के साथ, जब f() को बाइट तर्क के साथ कॉल किया जाता है, तो f(बाइट) को int में स्वचालित रूपांतरण के बिना, सीधे कॉल किया जाता है।
विधि ओवरलोडिंग जावा में बहुरूपता की अनुमति देती है, जिससे "एक इंटरफ़ेस, कई विधियां" प्रतिमान के कार्यान्वयन की सुविधा मिलती है।
बिना ओवरलोडिंग समर्थन वाली भाषाओं में, विभिन्न डेटा प्रकारों के लिए समान तरीकों के अलग-अलग नाम होने चाहिए (उदाहरण के लिए सी में एबीएस(), लैब्स(), फैब्स())।
जावा आपको विभिन्न प्रकार के तर्कों के साथ विधियों के लिए एक ही नाम का उपयोग करने की अनुमति देता है, जैसे कि गणित वर्ग की एबीएस() विधि, जो विभिन्न संख्यात्मक प्रकारों के लिए अतिभारित है।
ओवरलोडिंग संबंधित तरीकों को एक सामान्य नाम साझा करने की अनुमति देकर जटिलता को कम करता है।
विधि के सही संस्करण का चयन तर्क प्रकार के आधार पर संकलक द्वारा किया जाता है।
हालांकि अतिभारित तरीके अलग-अलग गतिविधियां कर सकते हैं, उन्हें स्पष्टता और सुसंगतता बनाए रखने से संबंधित होना चाहिए।
असंबद्ध संचालन के लिए अतिभारित विधि नामों का उपयोग करने से बचें, क्योंकि इससे कोड का उद्देश्य भ्रमित हो सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3