در جلسه قبل ما در کلاس cars متغیر هایی داشتیم که نام ماشین ها بودند (مانند کد زیر). می توانیم بگوئیم Attributes کلاس، متغیر های یک کلاس هستند.

یک کلاس با نام Cars  و سه Attributes با نام های Benz, Bmw, Volvo در کد زیر ایجاد کردیم.

Cars.java:

public class Cars {
    String Benz = "Benz", Bmw = "BMW", Volvo = "Volvo";
}

در کد بالا یک کلاس با نام Cars ایجاد کردیم و سه تا Attributes با نام های Benz, Bmw, Volvo نام گذاری و نام ماشین های مطابق با نام Attributes مقدار دهی کردیم.

اصطلاح دیگر برای Attributes کلاس، fields می باشد

دسترسی (Accessing) به Attributes

شما با ایجاد کردن یک شی (object) در کلاس و با استفاده از نقطه (.) در syntax به attributes دسترسی پیدا می کنید.

در مثال زیر ما یک شی (object) با نام ObjCars از کلاس Cars ایجاد می کنیم و ما از Attributes Bmw روی شی برای چاپ نام ماشین BMW استفاده می کنیم.

Main.java:

public class Main {
    public static void main(String[] args) {
        Cars ObjCars = new Cars (); // می باشد Cars یک شی ساخته شده از کلاس ObjCars
        System.out.println ( ObjCars.Bmw ); //print BMW
    }
}

در کد بالا یک کلاس با نام Main ایجاد کردیم و یک شی از کلاس cars ایجاد کردیم و با استفاده از Attribute Bmw نام ماشین BMW را چاپ کردیم.

تغییر (Modify) دادن Attributes

خب ابتدا دوتا فایل با نام های Cars.java وMain.java ایجاد می کنیم.

Cars.java:

public class Cars {
    String Benz = "Benz", Bmw = "BMW", Volvo = "Volvo", Samand;
}

در کد بالا یک کلاس با نام Cars با Attributes Benz, Bmw, Volvo, Samand ایجاد کردیم برای تمامی Attributes مقدار دهی کردیم بجز Samand که مقدار آن خالی می باشد.

خب در کد زیر یک شی از کلاس Cars ایجاد و Attribute Samand مقدار آن را برابر SAMAND تغییر(Modify) خواهیم داد.

Main.java:

public class Main {
  public static void main(String[] args) {
    Cars CarsObj = new Cars();
    CarsObj.Samand = "SAMAND";
    System.out.println(CarsObj.Samand); //print SAMAND
  }
}

خب در مثال بعدی ما مقدار فعلی Attribute Bmw را که BMW می باشد به BMW-2 تغییر (Modify) خواهیم داد.

Main.java:

public class Main {
  public static void main(String[] args) {
    Cars CarsObj = new Cars();
    CarsObj.‌Bmw = "BMW-2";
    System.out.println(CarsObj.Bmw); //print BMW-2
  }
}

در صورتی که قبل از Attribute کلمه کلیدی final استفاده بکنیم دیگر نمی توانیم آن را تغییر (Modify) بدهیم.

Cars.java:

public class Cars {
    String Benz = "Benz", final Bmw = "BMW", Volvo = "Volvo", Samand;
}

در کد بالا  کلاس Cars قبل از Attribute Bmw کلمه کلیدی final استفاده کردیم که قابل تغییر(Modify) نباشد.

Main.java:

public class Main {
  public static void main(String[] args) {
    Cars CarsObj = new Cars();
    CarsObj.‌Bmw = "BMW-2"; //will generate an error: cannot assign a value to a final variable
    System.out.println(CarsObj.Bmw); 
  }
}

به خطا مواجه خواهید شد نمی تواند مقداری را به یک متغیر final اختصاص دهد

کلمه کلیدی final زمانی مفید است که بخواهید در متغیرهمیشه یک مقدار را ذخیره کنید مانند اعداد PI (3.14159...).

درمثال های بعدی ایجاد کلاس و اشیاء و فقط در فایل Main.java ایجاد خواهیم کرد:

ایجاد چندین شی از یک کلاس

اگر چندین شیء از یک کلاس ایجاد کنید ، می توانید مقادیر Attributes را در یک شی تغییر دهید ، بدون این که بر مقادیر Attributes شی (object) دیگر تأثیر بگذارید:

Main.java:

public class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj1 = new Main();  // Object 1
    Main myObj2 = new Main();  // Object 2
    myObj2.x = 25;
    System.out.println(myObj1.x);  // Outputs 5
    System.out.println(myObj2.x);  // Outputs 25
  }
}

در کد بالا یک کلاس Main ایجاد کردیم که یک Attribute x داریم. و در method main دوتا object با نام های myObj1 و myObj2 ایجاد کردیم.

مقدار Attribute x را از ۵ به ۲۵ در myObj2 تغییر دادیم.

همانطور که در کد بالا مشاهده می کنید مقدار x در myObj2 تغییر می کند به ۲۵ اما در myObj1 تغییری صورت نمی گیرد.

ایجاد چندین Attributes در کلاس Main

می توانید هر تعداد Attributes را که می خواهید مشخص کنید:

Main.java:

public class Main {
  String fname = "John";
  String lname = "Doe";
  int age = 24;

  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println("Name: " + myObj.fname + " " + myObj.lname);
    System.out.println("Age: " + myObj.age);
  }
}

منبع:

۱.W3schools