1. Thuộc tính của Class trong Java là gì?

Thuộc tính trong class – Class Attributes là một biến được khai báo bên trong 1 class , nhưng lại không nằm trong một phương thức nào.

Thuộc tính là những thông tin riêng của mỗi đối tượng, ta có thể thấy nó như là những biến liên quan đến đối tượng đó. Chúng ta cần phải thống nhất nhóm đối tượng cần có những thông tin cơ bản gì? Không thể để việc đối tượng A có tên, tuổi, chiều cao; mà đối tượng B chỉ có tên, cân nặng, quê quán. Việc thông tin không thống nhất gây ra khó khăn trong việc logic cũng như quản lý.

Đó là lý do ta phải khai báo các thuộc tính trong lớp để các đối tượng của lớp đó bắt buộc phải có thông tin lưu trữ các thuộc tính trên.

Để khai báo một thuộc tính trong class các bạn sử dụng cú pháp sau:

assess_modifier option property_type name;

Trong đó:

  • assess_modifier là phạm vi truy cập của thuộc tính. assess_modifier sẽ là 1 trong 4 giá trị sau: public , protected , private , default hoặc bỏ trống
  • option là loại của thuộc tính. option có thể là final hoặc static hoặc bỏ trống.
  • property_type là kiểu dữ liệu của thuộc tính.
  • name là tên của thuộc tính.

Ví dụ: tạo một class có tên là Main và có các thuộc tính x và y

public class Main {
  int x = 5;
  int y = 3;
}

Người ta cũng hay gọi các thuộc tính là các trường(fields)

2. Truy cập thuộc tính của class trong Java

Để truy cập vào thuộc tính ta sẽ sử dụng toán tử chấm (.) . Ta có thể truy cập các thuộc tính bằng cách tạo một đối tượng của class

Ví dụ: tạo một đối tượng của class Main , với tên myObj . Ta sử dụng thuộc tính x trên đối tượng để in giá trị của nó

class Main {
  int x = 5;

  public static void main(String[] args) {
    Main myObj = new Main();
    System.out.println(myObj.x);
  }
}

Kết quả

5

3. Sửa đổi thuộc tính class trong Java

Việc sửa đổi thuộc tính trong class ta cũng dùng toán tử chấm để sửa đổi. Ở đây ta có thể hiểu là ta sẽ dùng toán tử chấm truy cập vào thuộc tính rồi gán cho nó một giá trị mới. Sau đó thì sẽ in giá trị mới của thuộc tính ra màn hình.

Ví dụ:

class Main {
  int x;

  public static void main(String[] args) {
    Main myObj = new Main();
    myObj.x = 40;
    System.out.println(myObj.x);
  }
}

Kết quả

40

Ta cũng có thể ghi đè lên giá trị hiện có của thuộc tính

public class Main {
  int x = 10;

  public static void main(String[] args) {
    Main myObj = new Main();
    myObj.x = 25; // x bây giờ bằng 25
    System.out.println(myObj.x);
  }
}

Kết quả

25

Nếu ta không muốn ghi đè lên giá trị hiện có của thuộc tính, ta có thể sử dụng từ khóa final. Mọi sửa đổi vào thuộc tính sẽ không thực hiện được. Nếu có tình sửa đổi sẽ gây ra lỗi.

public class Main {
  final int x = 10;

  public static void main(String[] args) {
    Main myObj = new Main();
    myObj.x = 25; // sẽ tạo ra một lỗi
    System.out.println(myObj.x); 
  }
}

Kết quả : hiển thị ra một lỗi kiểu như thế này

Main.java:6: error: cannot assign a value to final variable x
    myObj.x = 25;
         ^
1 error

4. Sửa đổi nhiều thuộc tính trong nhiều đối tượng

Nếu ta tạo nhiều đối tượng của một lớp, ta có thể thay đổi các giá trị thuộc tính trong một đối tượng mà không ảnh hưởng đến các giá trị thuộc tính trong đối tượng kia.

Ví dụ:

public class Main {
  int x = 5;

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

Kết quả

5
25

Ta có thể chỉ định bao nhiêu thuộc tính tùy thích

public class Main {
  String fname = "Thành";
  String lname = "Nguyễn";
  int age = 19;

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

Kết quả

Name: Thành Nguyễn
Age: 19

Bài sau ta sẽ học về các phương thức và truy cập phương thức.