Ngày 1: Encapsulation trong OOP
Encapsulation là một trong bốn nguyên lý cơ bản của OOP. Đó là thực hành đóng gói dữ liệu và phương thức liên quan thành một đơn vị duy nhất (đó là đối tượng). Tính đóng gói giúp ẩn đi chi tiết bên trong của một đối tượng và ngăn chặn nó khỏi việc thay đổi trực tiếp từ bên ngoài.
Ví dụ đơn giản về Encapsulation:
“`java
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
“`
Trong ví dụ trên, `name` và `age` là các trường riêng tư, chỉ có thể được truy cập thông qua các phương thức getter và setter.
Câu hỏi ôn phỏng vấn:
1. Encapsulation là gì trong Java?
– Encapsulation là một nguyên lý OOP cho phép chúng ta ẩn các dữ liệu và phương thức của đối tượng để ngăn chặn truy cập trực tiếp từ bên ngoài.
2. Tại sao nên sử dụng Encapsulation?
– Để tăng cường bảo mật, giữ các dữ liệu và phương thức của đối tượng an toàn khỏi sự can thiệp từ bên ngoài và ngăn chặn việc thay đổi dữ liệu trực tiếp.
3. Làm thế nào để thực hiện Encapsulation trong Java?
– Bằng cách tạo các trường dữ liệu riêng tư và cung cấp các phương thức getter và setter để truy cập và sửa đổi dữ liệu.
4. Trong ví dụ về Student, tại sao lại cần “this.name = name;” trong phương thức setName(String name)?
– Từ khóa “this” đề cập đến đối tượng hiện tại. Khi tên biến tham số (name) trùng với tên biến instance (name), chúng ta cần sử dụng từ khóa “this” để chỉ đến biến instance.
5. Nếu “name” và “age” là public thay vì private, thì có gì sai không?
– Không có gì sai theo ngữ pháp Java, nhưng điều này vi phạm nguyên lý Encapsulation. Bằng cách để các trường là public, chúng tôi mở ra khả năng truy cập trực tiếp và thay đổi các trường này từ bên ngoài lớp, điều này có thể dẫn đến lỗi và hệ quả không mong muốn.