تعداد بازدید: 7406

انواع متغیر ها در کلاس در جاوا

انواع مختلفی از متغیرها در کلاس وجود داره که دامنه دسترسی به هرکدوم و مقدار فضایی که به اون ها در حافظه اختصاص داده میشه متفاوت است. این که متغیر همراه کلمه کلیدی خاصی بیاد یا این که در چه جایی از کلاس باشه میتونه جزو دسته خاصی از متغیر ها باشه.

انواع متغیر ها در کلاس

local : اگر متغیری داخل متدی از کلاس باشه.

instance : اگر خارج از متدی از کلاس باشه.

static : اگر همراه کلمه کلیدی static و خارج از متدی از کلاس باشه.

متغیر محلی (Local variable)

  • این متغیر تنها در داخل متد تعریف میشن و تنها در داخل همون متد هم قابل دسترسی هستند.یعنی متد خارجی نمیتونه از اون ها استفاده کنه.
  • این متغیر ها باید مقدار دهی اولیه بشن و اگر در هنگام تعریف مقدار دهی نشن خطا رخ میده.

متغیر های نمونه یا فیلد ها (instance vairable)

  • فیلد ها داخل کلاس و خارج متد تعریف میشن.
  • وقتی یک شی می سازیم به تعداد متغیر نمونه یا فیلد اون کلاس از شی حافظه اختصاص داده میشه.
  • عمر فیلد ها به اندازه عمر شی است. با شی به وجود می آیند و با از بین رفتن شی از بین می روند.
  • فیلد ها در تمام کلاس و برای تمامی متد ها قابل دستیابی هستند.
  • فیلد ها دارای مقادیر پیش فرض هستند.(اگر مقدار دهی اولیه نشده باشند خطایی نداریم) مثلا اگر فیلد عددی تعریف کنم مقدار اون ها 0 خواهد بود.

متغیرهای استاتیک (static variable)

  • به متغیر های استاتیک متغیر های کلاس هم می گیم. (شاید به این دلیل که وابسته به شی نیستند و وابسته به کلاس هستند)
  • همراه با کلمه کلیدی static و خارج از متد و بلوک تعریف می شوند.
  • مقدار این متغیر برای تمامی اشیایی که از یک کلاس خاص ساخته شده باشند یکسان است. (بهتر است برای نگه داری ثوابت از آن ها استفاده کنیم)
  • بدون در نظر گرفتن تعداد شی ساخته شده از کلاس تنها یک کپی از متغیر استاتیک در حافظه نگهداری می شود.(یک بار ساخته میشه و تمامی اشیا به اون اشاره می کنند)
  • عمر متغیر ایستا به اندازه عمر برنامه است. یعنی زمانی که برنامه شروع می شود ساخته می شود و زمانی که پایان می یابد تمام می شود.(به عمر شی ربطی ندارد)
  • معمولا متغیر های استاتیک به صورت public تعریف می شوند . چرا که برای استفاده کنندگان از کلاس قابل دستیابی باشد.
  • امکان مشاهده آنها شبیه به متغیر های نمونه است (نحوه دسترسی از طریق شی ).
  • نیاز به مقداردهی اولیه ندارند.

کلاس student :

public class student {
    int student_id;
    String firstname;
    String lastname;
    String univercity = "imamreza.ac";

    public student(int input_id, String input_firstname, String input_lastname){
        student_id = input_id;
        firstname = input_firstname;
        lastname = input_lastname;
    }

    public void welcome(){
        System.out.println("welcome " + firstname + " " + lastname + "(" + student_id + ") from " + univercity + " univercity" );
    }


}

در این کلاس متغیر first_name و last_name متغیر نمونه (instance) هستند و متغیر univercity متغیر static است.

کلاس univercity :

public class univercity {
    public static void main(String args[]){
        student obj1 = new student(9121,"mahdi","developer");
        student obj2 = new student(9876,"abolfazl" , "sabagh");

        obj1.welcome();
        obj2.welcome();

    }
}

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

2 دیدگاه برای انواع متغیر ها در کلاس در جاوا

    • نمونه ساده : مقادیر ایستا را برای مقادیر غیر قابل تغییر استفاده کنید. به طور مثال آرایه ای از رشته های ثابت که می تواند یک سری slug باشد.
      به صورت پیشرفته تر : ماهیتی به نام Service Container وجود دارد که اشیا در آن موجود است و در صورتی که بخواهیم از متدی از یک از این سرویس ها استفاده کنیم در صورتی که به Service Container دسترسی نداشته باشیم می توانیم متد static تعریف کنید.

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

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