Như các ngôn ngữ lập trình hướng đối tượng khác, ngôn ngữ lập trình Java cũng có 4 đặc tính bao gồm tính đa hình, đóng gói, trừu tượng và kế thừa. Tiếp nối bài chia sẻ trước về tính đa hình, trong bài viết hôm nay anh sẽ chia sẻ về tính đóng gói trong lập trình hướng đối tượng Java. Bài viết giúp các bạn hiểu được tính đóng gói là gì? Tại sao chúng ta nên sử dụng tính đóng gói khi viết các chương trình lập trình Java? Những lợi ích mà nó mang lại nếu sử dụng?.
Tính đóng gói đảm bảo rằng dữ liệu nhạy cảm và quan trọng sẽ bị ẩn đi từ người dùng. Để làm được tính đóng gói ẩn dữ liệu quan trọng thì ta sử dụng từ khóa private cho các thuộc tính và cung cấp phương thức get và set cho các đối tượng khác muốn cập nhật giá trị hoặc lấy giá trị.
Trong ví dụ dưới đây ta muốn biến name là không được truy cập trực tiếp mà phải thông qua get và set method. Phương thức get sẽ trả về giá trị của biến name còn phương thức set sẽ gán giá trị mới cho biến name.
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
Một khi chúng ta đã đặt biến name là private thì các lớp khác sẽ không thấy biến name trực tiếp. Nếu các lớp khác vẫn cố tình gọi thì sẽ gặp lỗi sau error: name has private access in Person
1
2
3
4
5
6
7
public class MyClass {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}