ความแตกต่างอาจเป็นแบบคงที่หรือแบบไดนามิก ในความหลากหลายแบบคงที่ การตอบสนองต่อฟังก์ชันจะถูกกำหนด ณ เวลารวบรวม ในความหลากหลายแบบไดนามิก จะตัดสินใจที่รันไทม์
ในความหลากหลายแบบคงที่ การตอบสนองต่อฟังก์ชันจะถูกกำหนด ณ เวลารวบรวม ในพหุสัณฐานแบบไดนามิก จะตัดสินใจที่รันไทม์ ความหลากหลายแบบไดนามิกคือสิ่งที่เราเรียกว่าการรวมสาย
Compile Time Polymorphism หรือ Static Binding
กลไกของการเชื่อมโยงฟังก์ชันกับอ็อบเจ็กต์ระหว่างเวลาคอมไพล์เรียกว่าการโยงล่วงหน้า เรียกอีกอย่างว่าการผูกแบบคงที่
รันไทม์ Polymorphism หรือ Dynamic Binding
ความแตกต่างระหว่างรันไทม์มีเมธอดที่แทนที่ที่เรียกว่าการรวมไดนามิกหรือการโยงช้า
ให้เราดูตัวอย่างของการรวบรวมเวลาที่หลากหลายซึ่งใช้วิธีโอเวอร์โหลด -
ตัวอย่าง
using System; namespace PolymorphismApplication { class Printdata { void print(int i) { Console.WriteLine("Printing int: {0}", i ); } void print(double f) { Console.WriteLine("Printing float: {0}" , f); } void print(string s) { Console.WriteLine("Printing string: {0}", s); } static void Main(string[] args) { Printdata p = new Printdata(); // Call print to print integer p.print(5); // Call print to print float p.print(500.263); // Call print to print string p.print("Hello C++"); Console.ReadKey(); } } }
ผลลัพธ์
Printing int: 5 Printing float: 500.263 Printing string: Hello C++