07-03-19, 10:46 PM
بسم الله الرحمن الرحيم
تعدد الاشكال Polymorphism الجزء الثاني:
سبق وشرحنا في درس سابق عن تطبيق بسيط من تطبيقات تعدد الاشكال ،حيث اخذنا علامة الزائد (+) كمثال لذلك.
في هذا الدرس سوف نتعمق قليلا وذلك بتبيان انواع تعدد الاشكال.
هنالك نوعان من الـPolymorphism:
1- Compile Time Polymorphism.
2- Run Time Polymorphism.
1- Compile Time Polymorphism: يتم من خلال استخدام Overloading سواء للدوال أو للمعاملات
حيث يتم التحقق من الدالة المستدعاة من حيث نوع الدالة ونوع وعدد وترتيب الباراميترات وقت الترجمة Compile Time أي اثناء كتابة الكود البرمجي، وتسمى ايضا بــ static polymorphism او early binding
كما في المثال ادناه:
PHP كود :
public class Information
{
public void Print(string name) => Console.WriteLine(name);
public void Print(string name, int age) => Console.WriteLine($"{ name}, {age}");
}
2- Run Time Polymorphism: يتم من خلال استخدام مبدأ الوراثة باستخدام virtual methods في الكلاس الأب وoverride methods في الكلاس الابن
حيث يتم اعادة استخدام دوال الـvirtual في الكلاس الابن وذلك من خلال اعادة تعريف هذه الدوال بنفس الاسماء ونفس المدخلات باستخدام كلمة override بحيث يتم التحقق من هذه الدوال المستدعاة وقت التنفيذ، وتسمى ايضا بــdynamic polymorphism او late binding.
بحيث بامكاننا تحديث او تعديل مكونات الدالة الخاصة للـ Parent Class داخل الـ Childes Classes حسب متطلبات دوال الكلاسات الابناء.
المثال:
PHP كود :
internal class Program
{
private static void Main(string[] args)
{
Person person = new Employee();
person.Print(); // Output: This is an Employee
//new object
person = new Player();
person.Print(); // Output: This is Player
Console.ReadKey();
}
}
public abstract class Person
{
public virtual void Print() => Console.WriteLine("This is Base Class");
}
public class Employee : Person
{
public override void Print() => Console.WriteLine("This is an Employee");
}
}
تحياتي لكم
سجاد محمد