Tính đóng gói trong lập trình hướng đối tượng Java

Giới thiệu nội dung bài viết

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?.


1. Tính đóng gói trong lập trình hướng đối tượng Java là gì

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 
  }
}

2. Tại sao chúng ta sử dụng tính đóng gói

  • Chúng ta sẽ kiểm soát được các thuộc tính và phương thức có trong đối tượng
  • Các thông tin nhạy cảm và quan trọng chỉ được phép đọc
  • Tính bảo mật cao

3. Video Demo

4. Source code

Sourcecode


Mọi người hãy Subscribe kênh youtube dưới đây nhé để cập nhật các video mới nhất về kỹ thuật và kỹ năng mềm

Các khoá học lập trình MIỄN PHÍ tại đây


Comments