Đóng gói trong Java
Đóng gói trong là gì Java?
Đóng gói trong Java là một cơ chế để gói các biến (dữ liệu) và phương thức (mã) lại với nhau thành một đơn vị duy nhất. Đây là quá trình ẩn thông tin chi tiết và bảo vệ dữ liệu và hành vi của đối tượng. Đây là một trong bốn khái niệm OOP quan trọng. Lớp encapsulate dễ kiểm tra, vì vậy nó cũng tốt hơn cho việc kiểm tra đơn vị.
Nhấp chuột đây nếu video không thể truy cập được
Tìm hiểu về đóng gói trong Java với Ví dụ
Để hiểu rõ hơn về đóng gói, hãy xem xét lớp tài khoản ngân hàng sau với các phương thức gửi tiền và hiển thị số dư
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
Giả sử một hacker đã truy cập được vào mã tài khoản ngân hàng của bạn. Bây giờ, anh ta cố gắng gửi số tiền -100 vào tài khoản của bạn theo hai cách. Hãy xem phương pháp hoặc cách tiếp cận đầu tiên của anh ta.
Phương pháp 1: Anh ta cố gắng gửi một số tiền không hợp lệ (ví dụ -100) vào tài khoản ngân hàng của bạn bằng cách thao tác mã.
Bây giờ, câu hỏi là – Điều đó có thể không? Hãy cùng tìm hiểu. Thông thường, một biến trong một lớp được đặt là "private" như được hiển thị bên dưới. Nó chỉ có thể được truy cập bằng các phương thức được xác định trong lớp. Không có lớp hoặc đối tượng nào khác có thể truy cập chúng.
Nếu một thành viên dữ liệu là riêng tư, điều đó có nghĩa là nó chỉ có thể được truy cập trong cùng một lớp. Không có lớp bên ngoài nào có thể truy cập thành viên dữ liệu riêng tư hoặc biến của lớp khác. Vì vậy, trong trường hợp của chúng tôi, tin tặc không thể gửi số tiền -100 vào tài khoản của bạn.
Phương pháp 2: Cách tiếp cận đầu tiên của hacker không gửi được số tiền. Tiếp theo, anh ta cố gắng gửi số tiền -100 bằng cách sử dụng phương pháp "gửi tiền".
Nhưng việc thực hiện phương pháp có kiểm tra các giá trị âm. Vì vậy, cách tiếp cận thứ hai cũng thất bại.
Vì vậy, bạn không bao giờ tiết lộ dữ liệu của mình cho bên ngoài. Điều này làm cho ứng dụng của bạn an toàn.
Toàn bộ mã có thể được coi như một viên nang và bạn chỉ có thể giao tiếp thông qua các thông điệp. Do đó có tên là đóng gói.
Ẩn dữ liệu trong Java
Ẩn dữ liệu trong Java là ẩn các biến của một lớp khỏi các lớp khác. Nó chỉ có thể được truy cập thông qua phương thức của lớp hiện tại của chúng. Nó ẩn các chi tiết triển khai khỏi người dùng. Nhưng hơn cả việc ẩn dữ liệu, nó có nghĩa là để quản lý tốt hơn hoặc nhóm dữ liệu liên quan. Để đạt được mức độ đóng gói thấp hơn trong Java, bạn có thể sử dụng các trình sửa đổi như “protected” hoặc “public”. Với đóng gói, các nhà phát triển có thể dễ dàng thay đổi một phần của mã mà không ảnh hưởng đến phần khác.
Getter và Setter trong Java
Getter và Setter trong Java là hai phương pháp thông thường được sử dụng để truy xuất và cập nhật giá trị của một biến. Chúng chủ yếu được sử dụng để tạo, sửa đổi, xóa và xem các giá trị biến. Phương thức setter được sử dụng để cập nhật các giá trị và phương thức getter được sử dụng để đọc hoặc truy xuất các giá trị. Chúng còn được gọi là bộ truy cập và bộ biến đổi.
Đoạn mã sau đây là một ví dụ về phương thức getter và setter:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
Trong ví dụ trên, phương thức getBalance() là phương thức getter đọc giá trị của biến account_balance và phương thức setNumber() là phương thức setter đặt hoặc cập nhật giá trị cho biến account_number.
Trừu tượng hóa và đóng gói
Việc đóng gói thường bị hiểu nhầm với Trừu tượng. Hãy nghiên cứu-
- Đóng gói thiên về “Làm thế nào” để đạt được một chức năng
- Tính trừu tượng thiên về “Những gì” một lớp có thể làm.
Một ví dụ đơn giản để hiểu sự khác biệt này là điện thoại di động. Trong đó logic phức tạp trong bảng mạch được đóng gói trong màn hình cảm ứng và giao diện được cung cấp để trừu tượng hóa nó.
Ưu điểm của việc đóng gói trong Java
- Đóng gói là ràng buộc dữ liệu với các chức năng liên quan của nó. Ở đây chức năng có nghĩa là “phương thức” và dữ liệu có nghĩa là “biến”
- Vì vậy, chúng tôi giữ biến và phương thức ở một nơi. Nơi đó là “đẳng cấp”. Lớp là cơ sở cho việc đóng gói.
- Với Java Đóng gói, bạn có thể ẩn (hạn chế quyền truy cập) đối với các thành viên dữ liệu quan trọng trong mã của mình, giúp cải thiện tính bảo mật
- Như chúng ta đã thảo luận trước đó, nếu một thành viên dữ liệu được khai báo là “private”, thì nó chỉ có thể được truy cập trong cùng một lớp. Không có lớp bên ngoài nào có thể truy cập thành viên dữ liệu (biến) của lớp khác.
- Tuy nhiên, nếu bạn cần truy cập các biến này, bạn phải sử dụng "getter" và "setter" công khai phương pháp.