آموزش مقدماتی سی شارپ | چند ریختگی
خطای دسترسی
برای ثبت پاسخ، ابتدا باید در سایت وارد شوید.
مفهوم چند ریختگی زمانی اتفاق می افتد که چند کلاس از طریق وراثت به هم مرتبط شده اند. یعنی یک کلاس مادر داریم و چندین کلاس فرزند.
همانطور که گفتیم کلاس های فرزند، متد ها و ویژگی های کلاس مادر را به ارث می برند. چندریختگی به این معنی است که در کلاس های فرزند برای متد های به ارث برده شده، کد های متفاوتی بنویسیم تا جایگزین کد به ارث برده شده شود و کد جدیدی که مختص به همان کلاس فرزند است اجرا شود.
همانطور که در مثال زیر میبینید، کلاس های Pig و Dog متد animalSound() را از کلاس Animal به ارث می برند. اما هر کدام از آنها متن متفاوت و مختص به خود را چاپ می کند (چون هر کدام از حیوانات می توانند صدای متفاوتی داشته باشند). برای اینکار، متد به ارث برده شده را دوباره در کلاس فرزند بازنویسی می کنیم تا کد مورد نظر را به جای آن جایگزین کنیم.
در زبان C#، برای جایگزین کردن متد ها در کلاس فرزند، کلمه کلیدی virtual را به متد مورد نظر در کلاس مادر و کلمه کلیدی override را به همان متد هم نام در کلاس های فرزند اضافه می کنیم:
مثال
class Animal // Base class (parent)
{
public virtual void animalSound()
{
Console.WriteLine("The animal makes a sound");
}
}
class Pig : Animal // Derived class (child)
{
public override void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}
class Dog : Animal // Derived class (child)
{
public override void animalSound()
{
Console.WriteLine("The dog says: bow wow");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
}
}
خروجی:
The animal makes a sound
The pig says: wee wee
The dog says: bow wowچرا از وراثت و چند ریختگی استفاده می کنیم؟
این نوع کد نویسی بیشتر در کد های خیلی بزرگ کاربرد دارد و قابلیت استفاده ی دوباره از متد ها و کلاس های پر تکرار را هنگام ساخت کلاس های جدید ایجاد می کند. در عین حال که بعضی متد ها را نیز می توانیم با استفاده از چند ریختگی طبق نیاز خود در کلاس جدید تغییر دهیم.
برای ثبت پرسش ابتدا در سایت وارد شوید.