java, آموزش قدم به قدم جاوا, جاوا, شی گرایی در جاوا

overriding در جاوا (method overriding)

overriding در جاوا

در این جلسه، تیم کدگیت را با آموزش overriding در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با متد
  2. آشنایی با شی گرایی
  3. آشنایی با ارث بری

Overriding در جاوا

در یک کلاس اگر یک متد همنام متدی که در کلاس پدر خود وجود دارد،بنویسیم به آن override میگویند. به زبان دیگر اگر کلاس فرزند متدی را پیاده سازی کند که به نوعی در کلاس پدر وجود داشته است، overriding در جاوا انجام داده ایم. شروط overriding به ترتیب زیر است:

  1. نام متدها یکسان باشد
  2. ورودی و خروجی متدها یکسان باشد
  3. متدهای override شده حتما باید در دو کلاس متفاوت باشند و بین کلاس ها رابطه ارث بری وجود دارد.

مثال overriding در جاوا

دو کلاس به نام Human و Boy داریم. کلاس Boy از کلاس Human ارث بری میکند. حال برای اینکه overriding را در جاوا انجام دهیم برای دو کلاس متدی به نام eat مینویسیم.کد آن به صورت زیر است:

public class Human {

     public void eat() {
          System.out.println("Human is Eating....");
     }

}
public class Boy extends Human {

     @Override
     public void eat() {
          System.out.println("Boy is eating");
     }

}

حال نوبت به main رسیده است کد main به صورت زیر است:

public static void main(String[] args) {
          Boy boy = new Boy();
          boy.eat();

     }

حال در خروجی فقط متد درون کلاس Boy اجرا شده است. بدین ترتیب هر کلاس فرزند میتواند یک پیاده سازی منحصر به فرد برای خود داشته باشد.اگر هم این ویژگی را در کلاس فرزند نتوانستیم پیاده سازی کنیم کلاس پدر آن را مدیریت میکند!!! خروجی کد بالا به صورت زیر است:

Boy is eating

قوانین overriding در جاوا

  1. تمام آرگومان های ورودی خروجی متدها باید یکسان باشند.چه در کلاس پدر و چه در کلاس فرزند
  2. سطح دسترسی کلاس فرزند  نباید محدود کننده تر از Super Class باشد( همچنین نباید Private باشد). به عنوان مثال نباید متد کلاس پدر Public باشد متد کلاس فرزند نباید Protected fhan.
  3. متد override شده میتواند بعضی استثناها را کنترل کند(میتواند Checked exception را کنترل کند).
  4. برای دسترسی به کلاس پدر از کلاس فرزند کافیست کلمه super را استفاده کرد. در کد بالا اگر در کلاس Boy بنویسیم eat() آنوقت کلاس پدر نیز اجرا میشود.

نوشته های مشابه

2 دیدگاه در “overriding در جاوا (method overriding)

  1. وحید صفاری گفت:

    ضمن تشکر،
    این جمله اشتباه است:
    سطح دسترسی هر دو متد باید یکی باشد(منظور public یا private بودن است).

    سطح دسترسی متد جهت Override نباید private باشد
    سطح دسترسی متد در زمان Override میتواند از protected به public تغییر کند.

    1. سلام. بله شما درست می‌فرمایید. اینجا اشتباه از بنده بوده.
      تشکر از راهنماییتون.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *