ความแตกต่างระหว่างรันไทม์มีวิธีการแทนที่ที่เรียกว่าการรวมแบบไดนามิกหรือการรวมปลาย มันถูกนำไปใช้โดยคลาสนามธรรมและฟังก์ชั่นเสมือน
คลาสนามธรรม
คลาสนามธรรมประกอบด้วยเมธอดนามธรรมซึ่งใช้งานโดยคลาสที่ได้รับ
ให้เราดูตัวอย่างของคลาสนามธรรมที่ใช้รันไทม์ polymorphism -
ตัวอย่าง
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
ฟังก์ชันเสมือน
เมื่อคุณมีฟังก์ชันที่กำหนดไว้ในคลาสที่คุณต้องการนำไปใช้ในคลาสที่สืบทอดมา คุณจะใช้ฟังก์ชันเสมือน ฟังก์ชันเสมือนสามารถใช้งานได้แตกต่างกันในคลาสที่สืบทอดมาที่แตกต่างกัน และการเรียกใช้ฟังก์ชันเหล่านี้จะถูกตัดสินเมื่อรันไทม์