Java tut 26 : Java Encapsulation ( Đóng gói )

0
0
(0)

https://www.w3schools.com/java/java_encapsulation.asp

Encapsulation

Ý nghĩa của Encapsulation là đảm bảo rằng dữ liệu “nhạy cảm” được ẩn khỏi người dùng. Để đạt được điều này, bạn phải:

  • khai báo các biến / thuộc tính lớp dưới dạng private
  • cung cấp các phương thức lấy và đặt công khai để truy cập và cập nhật giá trị của một private biến

Get và Set

Bạn đã học từ chương trước rằng privatecác biến chỉ có thể được truy cập trong cùng một lớp (một lớp bên ngoài không có quyền truy cập vào nó). Tuy nhiên, có thể truy cập chúng nếu chúng tôi cung cấp các phương thức get và set công khai .

Các getphương pháp trả về giá trị biến, và các setbộ phương pháp giá trị.

Cú pháp cho cả hai là chúng bắt đầu bằng gethoặc set, theo sau là tên của biến, với chữ cái đầu tiên viết hoa:

Thí dụ

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}
 
 

Giải thích ví dụ

Các getphương thức trả về giá trị của biến name.

Các setphương pháp có một tham số ( newName) và gán nó vào namebiến. Các thistừ khóa được sử dụng để tham khảo các đối tượng hiện hành.

Tuy nhiên, vì namebiến được khai báo là private, chúng ta không thể truy cập nó từ bên ngoài lớp này:

Thí dụ

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

Chạy ví dụ »

Nếu biến được khai báo là public, chúng ta sẽ mong đợi kết quả sau:John

Tuy nhiên, khi chúng tôi cố gắng truy cập một privatebiến, chúng tôi gặp lỗi:MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

Thay vào đó, chúng tôi sử dụng các phương thức getName()và setName()để truy cập và cập nhật biến:

Thí dụ

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"
 
 

Hãy tự mình thử »


Tại sao đóng gói?

  • Kiểm soát tốt hơn các thuộc tính và phương thức của lớp
  • Các thuộc tính lớp có thể được đặt ở chế độ chỉ đọc (nếu bạn chỉ sử dụng getphương thức) hoặc chỉ ghi (nếu bạn chỉ sử dụng setphương thức)
  • Linh hoạt: lập trình viên có thể thay đổi một phần của mã mà không ảnh hưởng đến các phần khác
  • Tăng cường bảo mật dữ liệu

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave A Reply

Your email address will not be published.