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

کلید واژه final در جاوا (Final keyword)

کلید واژه final در جاوا

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

  1. شی گرایی در جاوا
  2. Constructor در جاوا
  3. ارث بری در جاوا
  4. Override در جاوا
  5. آشنایی با متد

کلید واژه final در جاوا

کلید واژه final در مواقعی استفاده میشود که ما میخواهیم کاربر را محدود کنیم. این نوع محدودیت را میتوان در زمینه های مختلفی اعمال کرد:

  1. محدودیت متغیر
  2. محدودیت متد
  3. محدودیت کلاس

متغیر final

وقتی ما از کلید واژه final در جاوا برای یک متغیر استفاده میکنیم باعث میشود متغیر فقط یک بار مقدار دهی شود. ما میتوانیم یک فیلد را final تعریف کنیم. در این صورت دو حالت به وجود می آید:

  1. فیلد مورد نظر را مستقیم مقدار دهی کنیم مانند final int x = 10;
  2. فیلد مورد نظر را مستقیم مقدار دهی نکنیم در این صورت فقط میتوان آن را در constructor مقدار دهی کرد.

کد زیر را ببینید:

public class Bike_Limit {

     final int speedlimit = 90;// final variable

     void run() {
//        speedlimit = 400; compilation Error
     }

     public static void main(String args[]) {
          Bike_Limit obj = new Bike_Limit();
          obj.run();
     }

}

ما کلاسی به نام Bike_Limit ساختیم و فیلدی به نام speedlimit را به صورت مستقیم مقدار دهی کردیم. سپس متدی به نام run نوشتیم و در آن متد نیز متغیر را تغیر داریم(البته این قسمت از کد را کامنت کردیم)! اگر این کد را اجرا کنید برنامه خطای کامپایل میدهد (چون متغیر final را یک بار میتوان مقدار دهی کرد)!!!

متد final

وقتی متدی را final تعریف میکنیم آن متد را نمیتوان override کرد. این محدودیت کلید واژه final بر روی متد است. مثال زیر را ببینید:

public class Bike {

     final void run() {
          System.out.println("running");
     }
}

class Honda extends Bike {
     //can not override final methods
//   void run() {
//        System.out.println("running safely with 100kmph");
//   }

     public static void main(String args[]) {
          Honda honda = new Honda();
          honda.run();
     }

}

ما کلاسی به نام Bike نوشتیم و کلاس دیگری به نام Honda را فرزند Bike قرار دادیم. متدی به نام Run در Bike نوشتیم که final نیز است. این متد را در Honda نیز نوشتیم برای override کردن که البته آن را کامنت کردیم. کد بالا را اجرا کنید با خطا روبرو میشوید زیرا نباید متد final که نوشتیم override شود.

کلاس final

کلید واژه final در جاوا را اگر برای کلاس به کار ببریم دیگر نمیتوانیم آن کلاس را extends کنیم. در کد زیر مثال ساده ای زدیم که در صورت اجرا خطای کامپایل میدهد(چون کلاس final را extends کردیم)!!

final class Final_Bike {
}

class Honda1 extends Final_Bike {
     void run() {
          System.out.println("running safely with 100kmph");
     }

     public static void main(String args[]) {
          Honda1 honda = new Honda1();
          honda.run();
     }

}

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

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

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