Ngày 1: Tính đóng gói (Encapsulation) trong lập trình Java
Encapsulation là quá trình đóng gói dữ liệu và các phương thức thao tác dữ liệu (methods) vào trong một đơn vị duy nhất (đó là lớp). Encapsulation giúp bảo vệ dữ liệu từ sự truy cập trực tiếp từ bên ngoài – chỉ có các phương thức của lớp mới có thể truy cập được vào dữ liệu.
Ví dụ về encapsulation:
“`java
public class Car {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
“`
Trường hợp đặc biệt: Tránh sử dụng các method setter không cần thiết, hãy cung cấp chỉ đúng những gì thực sự cần thiết để bảo vệ dữ liệu.
Câu hỏi ôn phỏng vấn:
1. Tại sao lại cần Encapsulation trong lập trình OOP?
– Trả lời: Encapsulation giúp bảo vệ dữ liệu khỏi việc truy cập trực tiếp từ bên ngoài và chỉ có thể truy cập thông qua các phương thức của lớp.
2. Có những cách nào để thực hiện encapsulation trong Java?
– Trả lời: Có hai cách: đóng gói dữ liệu bằng cách đặt từ khóa private và cung cấp các getter và setter.
3. Đặc điểm của từ khóa ‘private’ trong Java là gì?
– Trả lời: Từ khóa ‘private’ giúp giới hạn quyền truy cập vào các thành phần (trường, phương thức) của lớp từ bên ngoài lớp.
4. Lợi ích của ‘getter’ và ‘setter’ là gì?
– Trả lời: ‘Getter’ và ‘setter’ giúp chúng ta truy cập vào dữ liệu của một đối tượng mà không cần phải truy cập trực tiếp vào trường dữ liệu.
5. Đôi khi, tác giả của lớp không cung cấp method ‘setter’, tại sao lại vậy?
– Trả lời: Khi một thuộc tính không cần thiết phải thay đổi sau khi đối tượng được khởi tạo, method ‘setter’ không cần thiết và việc này giúp bảo vệ dữ liệu không bị thay đổi. Điều này giúp giữ đúng nguyên tắc bảo vệ dữ liệu trong lập trình hướng đối tượng.