PDA

View Full Version : سوال: سوال در مورد override



DumanNazeri
یک شنبه 14 اردیبهشت 1393, 15:34 عصر
سلام. وقت بخیر. خسته نباشید.
من یه برنامه‌ی ویندوز فرم فروشگاه کتاب دارم.
یه کلاس Book توش تعریف شده و یه کلاس BookStore.
تو کلاس Book موجودیت کتاب به همراه متغییرهای مربوطه عنوان و قیمت و .. تعریف شده..
و تو کلاس BookStore هم لیست از کتاب ها و ...
حالا یه چیزی هست که من اونُ نمی‌فهمم اونم این متدی هستش که تو کلاس Book تعریف شده :‌

public override string ToString() {
return "Title: " + Title + Environment.NewLine
+ "Author: " + Author + Environment.NewLine
+ "ISBN: " + ISBN + Environment.NewLine
+ "Publisher: " + Publication + " ( " + Year + " )" + Environment.NewLine
+ "Price : " + Price + Environment.NewLine;
base.ToString();
}


ممنون می‌شم اگه در موردِ این متد راهنمایی‌م کنید..
واژه‌ی override تو متد بالا چی هستش؟‌ به چه دردی می‌خوره؟
ممنون میشم اگر کامل راهنمایی‌م کنید..

Davidd
یک شنبه 14 اردیبهشت 1393, 16:24 عصر
زماني كه يك كلاس از يك كلاس پايه ارث بري مي كند، تمام متدها و خصوصيات كلاس پايه را به ارث مي برد. ممكن است نياز باشد تا يكي از متدهاي كلاس پايه را تغيير دهيم در اين حالت از overriding استفاده مي شود.
تمام كلاس هايي كه در c# تعريف مي شوند به طور پيش فرض از كلاس Object ارث بري مي كنند كه كلاس Object يك متد ToString() دارد. اگر يك كلاس متد ToString() را override نكند (دوباره تعريف نكند) اين متد تنها نام كلاس ( شايد نام شي) را بر مي گرداند.
در اين مورد هم كلاس Book متد ToString را override كرده تا زماني كه شي از كلاس Book اين متد را صدا زد، مشخصات كتاب برگدانده شود. base.ToString(); يعني همان متد كلاس پايه، كه در اينجا هيچ وقت اين خط اجرا نمي شود چون با دستور return از متد خارج مي شود.