रनटाइम पॉलीमॉर्फिज्म में मेथड ओवरराइडिंग होता है जिसे डायनामिक बाइंडिंग या लेट बाइंडिंग के नाम से भी जाना जाता है। यह एब्स्ट्रैक्ट क्लासेस और वर्चुअल फ़ंक्शन्स द्वारा इम्प्लीमेंट किया जाता है।
एब्स्ट्रैक्ट क्लासेस
एब्स्ट्रैक्ट क्लासेस में एब्स्ट्रैक्ट मेथड्स होते हैं, जिन्हें डेराइव्ड क्लास द्वारा इम्प्लीमेंट किया जाता है।
आइए रनटाइम पॉलीमॉर्फिज्म इम्प्लीमेंट करने वाली एब्स्ट्रैक्ट क्लासेस का उदाहरण देखें -
उदाहरण
using System;
namespace PolymorphismApplication {
abstract class Shape {
public abstract int area();
}
class Rectangle : Shape {
private int length;
private int width;
public Rectangle(int a = 0, int b = 0) {
length = a;
width = b;
}
public override int area() {
Console.WriteLine("Rectangle class area :");
return (width * length);
}
}
class RectangleTester {
static void Main(string[] args) {
Rectangle r = new Rectangle(10, 7);
double a = r.area();
Console.WriteLine("Area: {0}", a);
Console.ReadKey();
}
}
}
आउटपुट
Rectangle class area : Area: 70
वर्चुअल फ़ंक्शन्स
जब आपके पास एक क्लास में परिभाषित फंक्शन होता है जिसे आप इनहेरिटेड क्लास(एस) में इम्प्लीमेंट करना चाहते हैं, तो आप वर्चुअल फ़ंक्शन्स का उपयोग करते हैं। वर्चुअल फ़ंक्शन्स को अलग-अलग इनहेरिटेड क्लास में अलग तरीके से इम्प्लीमेंट किया जा सकता है और इन फ़ंक्शन्स को कॉल करने का निर्णय रनटाइम पर लिया जाता है।