2010-10-03 22 views
6

मान लीजिए मैं एक कक्षा में दो तरीकों का कहना हैजावा ओवरलोडिंग और अधिभावी

public void eat(int i,String s) और

public void eat(String s, int i)

तो क्या है यह पसंद है। ओवरलोडिंग या ओवरराइडिंग?

+5

बस प्रत्येक लेख की पहली वाक्य पढ़ें http://en.wikipedia.org/wiki/Method_overloading http://en.wikipedia.org/wiki/Method_overriding –

+0

यह आपकी लोडिंग को ओवरलोडिंग और ओवरराइड कर रहा है यदि आपकी विधि किसी बच्चे में रखी जाती है कक्षा जो विभिन्न प्रत्यारोपण प्रदान करती है। – qrtt1

उत्तर

10

ओवरलोडिंग का मतलब एक ही नाम के साथ दो विधियों या अधिक है, लेकिन आपके उदाहरण की तरह विभिन्न पैरामीटर के साथ। जबकि आप ओवरराइडिंग को इंटरफेस या अमूर्त वर्ग से एक विधि को कार्यान्वित करते हैं, इसलिए सुपर क्लास में विधि में कार्यान्वयन होता है और उप-वर्ग में एक अलग, फिर भी उनके पास एक ही विधि का नाम और पैरामीटर है।

6

कि विधि से अधिक भार हो सकता है, के रूप में यह विधि ओवरलोडिंग के लिए शर्तों को पूरा करता:

  • अलग तर्क सूचियों होना चाहिए
  • अलग वापसी प्रकार मिल सकता है, अगर तर्क सूचियों भी अलग हैं
  • मई अलग-अलग एक्सेस संशोधक हैं
  • विभिन्न अपवादों को फेंक सकते हैं

भी ओवरराइडिंग तब हो सकती है जब विरासत शामिल हो। चूंकि आपकी दोनों विधियां एक ही कक्षा में हैं, इसलिए इसे ओवरराइड नहीं किया जा सकता है।

6

यह ओवरलोडिंग है। जब आप एक ही विधि हस्ताक्षर के लिए विभिन्न कार्यान्वयन देते हैं तो ओवरराइडिंग विरासत में उपयोग की जाती है।

2

यह ओवरलोडिंग है। संक्षेप में:
      अधिभावी = जगह
      ओवरलोडिंग = अधिक विकल्प

2

ओवरलोडिंग और अधिभावी के बारे में नियमों की तरह दे:

  1. कंस्ट्रक्टर्स अतिभारित किया जा सकता लेकिन ओवरराइड नहीं।
  2. सार ठोस विधियों को पहले ठोस उप-वर्ग द्वारा ओवरराइड किया जाना चाहिए।
  3. अधिभावी विधि:
    • एक ही तर्क सूची (यह भी माता-पिता के वर्ग 'वापसी प्रकार का एक उपवर्ग हो सकता है होना आवश्यक है,
    • ही वापसी प्रकार होना आवश्यक है,
    • एक अधिक प्रतिबंधात्मक पहुँच नहीं चाहिए संशोधक,
    • एक कम प्रतिबंधक पहुँच संशोधक हो सकता है,
    • फेंक सकता है कम या संकरा अपवाद जाँच की नई या व्यापक अपवाद जाँच फेंक नहीं करना चाहिए, या किसी भी संयुक्त राष्ट्र अपवाद की जांच की।
  4. अंतिम विधियों को ओवरराइड नहीं किया जा सकता है।
  5. केवल विरासत विधियों को ओवरराइड किया जा सकता है, और याद रखें कि निजी विधियां विरासत में नहीं हैं।
  6. उप-वर्ग उपयोग में: super.overriddenMethodName() सुपरक्लास 'ओवरराइड विधि को कॉल करने के लिए।
  7. अतिभारित विधि:
    • अलग तर्क सूचियों होना आवश्यक है,
    • अलग वापसी प्रकार हो सकता है, अगर तर्क सूचियों भी अलग हैं,
    • विभिन्न पहुँच संशोधक हो सकता है,
    • अलग अपवाद फेंक सकता है।
  8. सुपरक्लास से विधियों को उप-वर्ग में ओवरलोड किया जा सकता है।
  9. पॉलिमॉर्फिज्म ओवरराइडिंग पर लागू होता है लेकिन अधिभारित नहीं होता है।
  10. ऑब्जेक्ट प्रकार (संदर्भ चर के प्रकार नहीं) निर्धारित करता है कि रनटाइम पर कौन सी ओवरराइड विधि का उपयोग किया जाता है।
  11. संदर्भ प्रकार निर्धारित करता है कि संकलित समय पर किस अधिभारित विधि का उपयोग किया जाएगा।

* कैथी सेइरा, बर्ट बेट्स द्वारा जावा 6 अध्ययन मार्गदर्शिका के लिए सूर्य प्रमाणित प्रोग्रामर से लिया गया।

0

संपत्ति ------------------- अधिक भार -------------------- ओवरराइड

विधि नाम --------------> वही होना चाहिए --------------------> होना चाहिए

Arg प्रकार ------------------> अलग होना चाहिए (कम से कम तर्क) ----> होना चाहिए (ऑर्डर सहित)

विधि हस्ताक्षर ------ -----> अलग होना चाहिए (कम से कम तर्क) ----> होना चाहिए (ऑर्डर सहित)

वापसी का प्रकार ----------------> कोई प्रतिबंध नहीं -------------------> एन ओ प्रतिबंध

निजी, स्टेटिक, अंतिम -------> नहीं प्रतिबंध --------------------> एक ही

पहुँच होना आवश्यक है संशोधक ------------> कोई प्रतिबंध नहीं -------------------- वही

कोशिश/पकड़ ------ -----------> कोई प्रतिबंध नहीं -------------------- अपवाद फेंक दिया गया है

विधि समाधान ------- -> कंपाइलर समय (संदर्भ) -------- (JVM) रन टाइम पोयमोर्फिज्म

1

विधि ओवरलोडिंग का मतलब है कि एक ही नाम के साथ कक्षा में दो अलग-अलग तरीकों को प्रदान करना है, लेकिन अलग-अलग तर्क जबकि विधि वापसी प्रकार भिन्न हो सकता है या नहीं हो सकता है जो हमें उसी विधि नाम का पुन: उपयोग करने की अनुमति देता है।

ओवरराइड करने का तरीका बाल वर्ग में एक विधि को परिभाषित करना है जो पहले से ही उसी विधि हस्ताक्षर के साथ मूल वर्ग में परिभाषित किया गया है, वही नाम, तर्क और वापसी प्रकार।

विधि ओवरलोडिंग और विधि अधिभावी के बीच अंतर

Difference Between Method Overloading and Method Overriding

अधिक जानकारी के लिए आप Everything About Method Overloading Vs Method Overriding पढ़ सकते हैं।

संबंधित मुद्दे