PDA

View Full Version : سوال: ارث بری



sani_87
شنبه 06 مهر 1387, 11:49 صبح
سلام دوستان...
من یه سوال از ارث بری کلاس ها داشتم.
من می خوام یه کلاس رو override کنم(مثلا کلاس 2) واسه همین تو یه کلاس دیگه( کلاس1)ازش ارث بری کردم.ولی error می گیره که کلاس 2 سازنده بدون پارامتر نداره.

Error 1: Class2' does not contain a constructor that takes '0' arguments

من چی کار باید بکنم؟
با توجه به این که نمی تونم کلاس2 رو تغییر بدم!




public class Class1 : Class2
{

}





public class Class2
{
public Class2(int r)
{
throw new System.NotImplementedException();
}
}

Laser_Hadi
شنبه 06 مهر 1387, 13:25 عصر
دوست عزیز سلام :

نکته اول اینکه نمیشه یک کلاس رو Override کرد بلکه فقط میتونیم متدها و یا Propertyهای
یک کلاس رو Override کرد اون هم به شرط اینکه اون متد یا Property رو در کلاس Base به صورت Virtual تعریف کرده باشیم.

نکته دوم این که تمامی کلاسها در دات نت به طور پیشفرض از کلاس Object ارث می برن
بنابراین اگر برای کلاسی که خودمون ایجادش کردیم Constructor تعریف نکنیم , موقع Instance گرفتن از کلاس, دات نت از متد سازنده کلاس پایه که همون Object باشه برای ایجاد شیء استفاده مکنه. اما اگر برای کلاس خودمون حتی یک Constructor تعریف کنیم , دیگه دات نت از کلاس Object استفاده نمیکنه, بنابراین در مورد برنامه شما, باید حتما" یک Constructor دیگر بدون پارامتر ورودی تعریف کنید

امیدوارم توضیحات من کامل بوده باشه و مشکلتون حل بشه


با تشکر : لیزر Laser
1387/7/6