مهدی
2 سال پیش توسط مهدی مطرح شد
1 پاسخ

override

سلام دوستان خسته نباشید یه سوال داشتم من مفهوم override رو متوجه شدم ولی سوالی که دارم اینه که خب چرا اصلا باید ازش استفاده کنیم چ سودی داره خب چه اتفاقی میوفته اگه توی کلاس فرزند از یک متد دیگه برای مثلا محاسبه مساحت مربع استفاده کنیم ن از متدی که توی کلاس پدر هست ؟ کلا سوالم اینه override کردن چ سودی داره؟؟؟؟؟؟؟؟؟؟؟؟


ثبت پرسش جدید
:)
تخصص : اندروید - تازه کار
@ERR 2 سال پیش آپدیت شد
2
  • یکی از فوایدش پرهیز از کدهای تکراریه مثلا کلاس پدر اداره میباشد و دو متغیر نام و نام خانوادگی و یک متد printInfo()
    و دو کلاس فرزند به نام اداره برق و اداره گاز با متغییر های مخصوص به خود, اگر در کلاس های فرزند متد printInfo رو رونویسی کنیم با فرخوانی parent::printInfo() میتوانیم نام و نام خوانوادگی رو بدون استفاده از کدهای تکراری چاپ کنیم
    (در واقع ما با این کار تضمین میکنیم که اگه کلاس های فرزند این متد رو رونویسی نکنند نام و نام خانوادگی چاپ شه اگر هم رونویسی کنند به سلیقه خودشون بتونن تغییر بدند(در بیشتر برنامه ها کدهایی وجود داره که حتمن باید در متد پدر اجرا شن مگر اینکه رونویس کننده این متد اون رو به سلیقه خود تغییر بده مثلن ابتدا متد پدر رو فراخانی کنه و در زیرش چند کد هم خودش اضاف کنه ))

  • اما یکی از مهم تری کاری که اورراید داره اینه که فرض کنید یک پکیج از گیت هاب یا ... میگیرید(یا خودتون میسازید)
    این پکیج عکس رو میگیره و به اندازه ای که بهش میدید تبدیل میکنه
    شما یک کلاس میسازید که از کلاس size این پکیج extends شده
    و کلاس size یک متد getSize دارد که اندازه عکس را تعیین میکند.
    شما باید این متد را در کلاس خود اورراید کنید و یک عدد به عنوان سایز به آن بدهید وقتی پکیج عکس فراخوانی بشه این متد فراخانی و مقدار به این پکیج ارسال میشه
    اما اگه یه متد دیگه توی این کلاس بسازید مثلا getMySize و یک مقدار با اون برگشت بدید ایا اندازه تغییر میکنه ؟
    قطعا جواب خیر است چون پکیج عکس از کجا باید بدونه که این متد شما برای چه کاریه؟
    پس متدهای فوق کلاس(پدر) در این زمان با اورراید میدونن که به کدام متد باید دسترسی داشته باشند


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام