Giải thích về Getters và Setters trong Java

Getters và setters được sử dụng để bảo vệ dữ liệu của bạn, đặc biệt là khi tạo các lớp.

Đối với mỗi biến thể hiện, một phương thức getter trả về giá trị của nó trong khi một phương thức setter đặt hoặc cập nhật giá trị của nó. Vì điều này, getter và setter còn được gọi là accessorsmutators , tương ứng.

Theo quy ước, getters bắt đầu bằng từ "get" và setters với từ "set", theo sau là một tên biến. Trong cả hai trường hợp, chữ cái đầu tiên của tên biến được viết hoa:

public class Vehicle { private String color; // Getter public String getColor() { return color; } // Setter public void setColor(String c) { this.color = c; } }

Phương thức getter trả về giá trị của thuộc tính. Phương thức setter nhận một tham số và gán nó cho thuộc tính.

Khi getter và setter đã được xác định, chúng tôi sử dụng nó trong chính của chúng tôi:

public static void main(String[] args) { Vehicle v1 = new Vehicle(); v1.setColor("Red"); System.out.println(v1.getColor()); } // Outputs "Red"

Getters và setters cho phép kiểm soát các giá trị. Bạn có thể xác nhận giá trị đã cho trong trình cài đặt trước khi thực sự đặt giá trị.

Tại sao sử dụng getters và setters?

Getters và setters cho phép bạn kiểm soát cách các biến quan trọng được truy cập và cập nhật trong mã của bạn. Ví dụ, hãy xem xét phương pháp setter này:

public void setNumber(int number) { if (number  10) { throw new IllegalArgumentException(); } this.number = num; }

Bằng cách sử dụng setNumberphương pháp này, bạn có thể chắc chắn rằng giá trị của numberluôn nằm trong khoảng từ 1 đến 10. Điều này tốt hơn nhiều so với việc cập nhật numbertrực tiếp biến:

obj.number = 13;

Nếu bạn cập nhật numbertrực tiếp, có thể bạn sẽ gây ra các tác dụng phụ không mong muốn ở nơi khác trong mã của mình. Ở đây, đặt numberthành 13 vi phạm ràng buộc 1 đến 10 mà chúng tôi muốn thiết lập.

Tạo numbermột biến private và sử dụng setNumberphương thức này sẽ ngăn điều này xảy ra.

Mặt khác, cách duy nhất để đọc giá trị của numberlà sử dụng phương thức getter:

public int getNumber() { return this.number; }