Dinamik polimorfizm. Runtime polimorfizmi yoki kech ulanish polimorfizmi deb ham atash mumkin. Polimorfizmning ushbu turida statik polimorfizmdan farqli tarzda bir sinfga tegishli metodlarni ushbu sinfdan voris oluvchi boshqa sinflarda qayta aniqlaymiz. Bu nima degani ? Misol tariqasida real bir voqeani qaraymiz. Geometrik shakl deganimizda uchuburchak, to’rtburchak, piramida va yana boshqa shakllar ko’z oldimizdan o’tadi. Lekin aynan bir shaklni tasavvur qila olmaymiz. Uchburchak deganimizda esa aksincha. Ushbu holat quyidagicha:
namespace ShaKhzoD
{
class Shakl
{
public virtual void Chizish()
{
Console.WriteLine("Men shakl chizaman.");
}
}
class Uchburchak : Shakl
{
public override void Chizish()
{
Console.WriteLine("Men uchburchak chizaman.");
}
}
class Aylana : Shakl
{
public override void Chizish()
{
Console.WriteLine("Men aylana chizaman.");
}
}
Yuqoridagi holatda “Shakl” sinfi ajdod sinf va unda Chizish() metodi mavjud, “Aylana” va “Uchburchak” sinflari esa uning voris sinflari va Chizish() metodini esa ularda qayta yozdik.
namespace ShaKhzoD
{
class Shakl
{
public virtual void Chizish()
{
Console.WriteLine("Men shakl chizaman.");
}
}
class Uchburchak : Shakl
{
public override void Chizish()
{
Console.WriteLine("Men uchburchak chizaman.");
}
}
class Aylana : Shakl
{
public override void Chizish()
{
Console.WriteLine("Men aylana chizaman.");
}
}
class Program
{
static void Main(string[] args)
{
//konstruktorlar e'loni
Shakl shakl = new Shakl();
Shakl uchburchak = new Uchburchak();
Shakl aylana = new Aylana();
//Metodni chaqirish
shakl.Chizish();
uchburchak.Chizish();
aylana.Chizish();
Console.ReadKey();
}
}
}
Do'stlaringiz bilan baham: |