PDA

View Full Version : یک سوال در مورد وراثت



Smn.Sdt
چهارشنبه 26 مرداد 1390, 14:09 عصر
فرض کنید کلاس A کلاس پایه هست و کلاس های B1، B2، ... ، Bn از کلاس A ارث می برند.
در کلاس A تابعی به اسم func داریم که در کلاس هایی که از A مشتق شده اند override شده است.
یک تابعی داریم که خروجی آن هر یک از کلاس های B1، B2، ... ، Bn می تواند باشد، به همین دلیل خروجی آن از نوع A تعریف شده است. اگه بخوایم که خروجی این تابع از تابع funcی که در زیرکلاس ها override شده استفاده کند باید چه کار کنیم؟ وقتی که خروجی رو از نوع A تعریف کردم، موقع استفاده از تابع func از اون تابعی که توی A هست استفاده میکنه!
چه کار کنم؟

محمد باقری نسب
چهارشنبه 26 مرداد 1390, 14:32 عصر
اگه میتونی نمونه کلاس A رو بنویس ببینم دقیقا منظورت چیه! همینطور نمونه ای از تابعی override شده در کلاسهای فرزندش

Alireza_cp
چهارشنبه 26 مرداد 1390, 15:49 عصر
اصلا اين override واسه همينه كه متد اصلي پوشيده بشه! احتمالا شما اشتباه استفاده كرديد!

اين مثال رو نگاه كنيد:


public class A
{
public virtual void func()
{
MessageBox.Show("class:A");
}
}

public class B : A
{
public override void func()
{
MessageBox.Show("class:B");
}
}

A test = new B();
test.func();


اينجا شما بايد خروجي class:B رو ببينيد، اگر غير اين هستش يه جاي كار رو اشتباه كرديد!
فقط درصورتي خروجي كلاس A نمايش داده ميشه كه شما در تعريف func در كلاس مشتق شده B از كلمه override استفاده نكرده باشيد و يا به جاي اون از كلمه new استفاده كرده باشيد!

Smn.Sdt
چهارشنبه 26 مرداد 1390, 17:59 عصر
تشکر
بله، من اشتباه کرده بودم ... الآن درست شد ...