FaridAghili
چهارشنبه 28 فروردین 1392, 21:09 عصر
سلام دوستان، قبل از هر چیز ممنون که وقت می ذارید.
اجازه بدید سوالم رو شرح بدم.
برای مثال من کلاسی به اسم Rect و کلاسی به اسم Square دارم که کلاس Square والد کلاس Rect هست.
به این صورت:
class Square
{
public Square()
{
}
public void Show()
{
MessageBox.Show("Square");
}
}
class Rect : Square
{
public Rect()
{
}
public void Show()
{
MessageBox.Show("Rect");
}
}
* در هر 2 کلاس، متدی به نام Show وجود داره که نام کلاس رو نمایش میده.
برای ساخت و استفاده از این 2 کلاس به شکل زیر عمل می کنم:
Square s = new Square();
s.Show(); //Output: Square
Rect r = new Rect();
r.Show(); //Output: Rect
همه چیز کاملا خوب پیش می ره تا زمانی که... به سرم می زنه و یه همچین کاری می کنم!
Square x = new Rect();
x.Show(); //Output: Square
همونطور که به صورت کامنت مشخص کردم، خروجی متد Show از متغیر x برابر با Square هست :| سوالی که پیش می یاد اینه که چرا متد Show از کلاس Square فراخوانی می شه و نه از کلاس Rect.
درسته که نوع داده ای x از نوع Square هست اما محتویات اون از نوع Rect هست.
بی نهایت ممنون می شم اگه مهندسین عزیز لطف کنن و توضیحی راجع به اتفاقی که اینجا میوفته بدن. اسم این پدیده! چیه، چرا این اتفاق میوفته، چطور می شه کنترلش کرد و هر چیزی که لازمه در این مورد بدونم.
سپاس، فرید.
اجازه بدید سوالم رو شرح بدم.
برای مثال من کلاسی به اسم Rect و کلاسی به اسم Square دارم که کلاس Square والد کلاس Rect هست.
به این صورت:
class Square
{
public Square()
{
}
public void Show()
{
MessageBox.Show("Square");
}
}
class Rect : Square
{
public Rect()
{
}
public void Show()
{
MessageBox.Show("Rect");
}
}
* در هر 2 کلاس، متدی به نام Show وجود داره که نام کلاس رو نمایش میده.
برای ساخت و استفاده از این 2 کلاس به شکل زیر عمل می کنم:
Square s = new Square();
s.Show(); //Output: Square
Rect r = new Rect();
r.Show(); //Output: Rect
همه چیز کاملا خوب پیش می ره تا زمانی که... به سرم می زنه و یه همچین کاری می کنم!
Square x = new Rect();
x.Show(); //Output: Square
همونطور که به صورت کامنت مشخص کردم، خروجی متد Show از متغیر x برابر با Square هست :| سوالی که پیش می یاد اینه که چرا متد Show از کلاس Square فراخوانی می شه و نه از کلاس Rect.
درسته که نوع داده ای x از نوع Square هست اما محتویات اون از نوع Rect هست.
بی نهایت ممنون می شم اگه مهندسین عزیز لطف کنن و توضیحی راجع به اتفاقی که اینجا میوفته بدن. اسم این پدیده! چیه، چرا این اتفاق میوفته، چطور می شه کنترلش کرد و هر چیزی که لازمه در این مورد بدونم.
سپاس، فرید.