يعتبر هذا المبدا من المبادىء الهامة للO.O.Programming حيث نستطيع عمل مشتقات للclassمن خلال استخدامى للمؤشر الخاص بالBase Classو بالتالى بامكانى استخدم ال
objectمن هذا الclassو استطيع استخدام كل الfunctionsالخاصة به
و بالتالى بامكانك من خلال خاصية التوريث ان تسمح لعدد اكبر من الكلاسس ان يشاركك با
functions
و اذا كانت كل الكلاسس المستخدمة تشتمل على نفس اسم functionالتالى من خلال اسم الobjectانى اشغل الfunctionالتى احتاجهاwe need to see an example
we have a base class with a virtual method
using system;
public class DrawingObject
{
public virtual void()
{
Console.WriteLine("Iam generic drawing object ");
}
}نرى فى هذا الكود وجود ما يسمى ب كلاس اساسىBase classو الذى من خلال الكلاس المشتقة نستطيع التعامل مع الدوال الموجودة بداخل الكلاس الاساسى
كالمثال التالى
using System;
public class Line :DrawingObject
{
public override void Draw ()
{
Console.WriteLine("iam a line");
}
}نجد ان تلك الكلاس المشتقة من الكلاس الاساسية المسماةdrawingobjectلديها امكانية استخدام نفس الداله المسماةDraw()و ذلك من خلال كلمةOverrideحيث تسمح هذه الكلمة باستخدام الكلاس الاساسى بدواله
من اهم عوامل نجاح الOverriding Methods
ان يكون لهذه الدوال نفس التوقيع و عدد العوامل و الاسم كما فى الكلاس الاساسى
in implementing the polymorphism in tha main function
public class DrawDemo
{
public static int Main(string[]args)
{
DrawingObject[] dObj=new DrawingObject[4];
dObj[0]=new line();
//as the number of drived classes increase the number of objects increase
foreach(DrawingObject drawObj in dObj)
{
drawObj.Draw();
}
}
}فنجد فى هذا الجزء من الكود اننا استخدمنا array و نوع هذه الarray is DrawingObject Class
and we initialized that array to hold the objects types
: the output will be
iam a line
iam just generic drawing object
so we should by now know the polymorphism,
also we should by now know the inhiritance
if you have any comments tell me please