स्थैतिक बहुरूपता में, किसी फ़ंक्शन की प्रतिक्रिया संकलन समय पर निर्धारित की जाती है। गतिशील बहुरूपता में, यह रन-टाइम पर तय किया जाता है। गतिशील बहुरूपता जिसे हम लेट बाइंडिंग कहते हैं।
गतिशील बहुरूपता अमूर्त वर्गों और आभासी कार्यों द्वारा कार्यान्वित की जाती है। निम्नलिखित एक उदाहरण है जो गतिशील बहुरूपता का एक उदाहरण दिखा रहा है -
उदाहरण
using System; namespace PolymorphismApplication { class Shape { protected int width, height; public Shape( int a = 0, int b = 0) { width = a; height = b; } public virtual int area() { Console.WriteLine("Parent class area :"); return 0; } } class Rectangle: Shape { public Rectangle( int a = 0, int b = 0): base(a, b) {} public override int area () { Console.WriteLine("Rectangle class area :"); return (width * height); } } class Triangle: Shape { public Triangle(int a = 0, int b = 0): base(a, b) {} public override int area() { Console.WriteLine("Triangle class area :"); return (width * height / 2); } } class Caller { public void CallArea(Shape sh) { int a; a = sh.area(); Console.WriteLine("Area: {0}", a); } } class Tester { static void Main(string[] args) { Caller c = new Caller(); Rectangle r = new Rectangle(10, 7); Triangle t = new Triangle(10, 5); c.CallArea(r); c.CallArea(t); Console.ReadKey(); } } }
आउटपुट
Rectangle class area : Area: 70 Triangle class area : Area: 25