अनुशंसित, 2020

संपादक की पसंद

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

विधि अतिभार
फंक्शन ओवरलोडिंग, जिसे फंक्शन ओवरलोडिंग या कम्पाइल टाइम पॉलिमोर्फिज्म के रूप में भी जाना जाता है, एक ही नाम के साथ दो या दो से अधिक तरीके होने की अवधारणा है, लेकिन एक ही दायरे में अलग-अलग हस्ताक्षर हैं। कई प्रोग्रामिंग भाषाएं हैं जो इस सुविधा का समर्थन करती हैं: Ada, C ++, C #, D, और Java।

C # में विधि अधिभार का उदाहरण

वर्ग ओवरलोडशैप्स {फ्लोट बहुभुज (इंट त्रिज्या, फ्लोट पी) {फ्लोट सर्कलएरिया = पीआई * त्रिज्या * त्रिज्या; } int बहुभुज (int लंबाई, int चौड़ाई) {int rectangleArea = लंबाई * चौड़ाई; } int बहुभुज (int side) {int squareArea = साइड * ओर; }}
1 2 3 4 5 6 7 8 9 10 11 12 13 14वर्ग ओवरलोडशैप्स {फ्लोट बहुभुज (इंट त्रिज्या, फ्लोट पी) {फ्लोट सर्कलएरिया = पीआई * त्रिज्या * त्रिज्या; } int बहुभुज (int लंबाई, int चौड़ाई) {int rectangleArea = लंबाई * चौड़ाई; } int बहुभुज (int side) {int squareArea = साइड * ओर; }}

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

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

C # में विधि के ओवरराइडिंग का उदाहरण

class Source1 {public void draw () {Console.Writeline ("मैं क्लास सोर्स 1 में हूं"); }} class Source2 का विस्तार होता है Source1 {public void draw () {Console.Writeline ("मैं क्लास Source2 में हूं"); }}
1 2 3 4 5 6 7 8 9 10स्रोत Source1 {सार्वजनिक शून्य ड्रा () {कंसोल। रिटलाइन ("मैं क्लास सोर्स 1 में हूं"); }} class Source2 का विस्तार होता है Source1 {public void draw () {कंसोल। रिटलाइन ("मैं कक्षा 2 के स्रोत में हूं"); }}

यहाँ, Source2 वर्ग में ड्रा विधि, Source1 वर्ग में परिभाषित ड्रा विधि को ओवरराइड करती है।

विधि अधिभार और विधि अधिभाव के बीच अंतर

  1. मेथड ओवरलोडिंग के तरीकों में एक अलग हस्ताक्षर होना चाहिए। विधि में, ओवरराइडिंग विधियों में एक ही हस्ताक्षर होना चाहिए।
  2. फंक्शन ओवरलोडिंग विधि के व्यवहार में "जोड़ने" या "विस्तार" करने के लिए है। ओवरराइडिंग एक विधि के व्यवहार को पूरी तरह से "परिवर्तन" या "पुनर्परिभाषित" करना है।
  3. कम्पाइल टाइम पॉलिमोर्फिज्म को प्राप्त करने के लिए मेथड ओवरलोडिंग का उपयोग किया जाता है; रन-टाइम बहुरूपता को प्राप्त करने के लिए विधि अधिभावी का उपयोग किया जाता है।
  4. विधि / कार्य में ओवरलोडिंग कंपाइलर जानता है कि संकलन के समय कौन सी वस्तु किस वर्ग को सौंपी गई है, लेकिन विधि में यह जानकारी ओवरराइड करने के लिए रनटाइम तक ज्ञात नहीं है।
  5. फंक्शन ओवरलोडिंग एक ही क्लास में होती है जबकि ओवरराइडिंग बेस क्लास से ली गई क्लास में होती है।
Top