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à accessors và mutators , 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 setNumber
phương pháp này, bạn có thể chắc chắn rằng giá trị của number
luô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 number
trực tiếp biến:
obj.number = 13;
Nếu bạn cập nhật number
trự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 number
thà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 number
một biến private và sử dụng setNumber
phươ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 number
là sử dụng phương thức getter:
public int getNumber() { return this.number; }