Tại sao quan tâm đến Access Modifier?
Access modifier, hay từ khóa phạm vi truy cập, là các "từ" được sử dụng trước các khai báo của một class, biến, hay method(phương thức) để chỉ ra khả năng truy cập của chúng ở các class khác. Trong Java, chúng ta có 4 loại access modifier là private, public, protected, và default. Trong bài viết này, chúng ta sẽ tìm hiểu về từng loại access modifier này và cách chúng ảnh hưởng đến việc truy cập các thành phần trong code của chúng ta.
1. Private, Public, Protected và Default
Private, public, protected, và default là những từ khóa phạm vi truy cập quan trọng trong Java. Chúng đại diện cho mức độ hạn chế hoặc công khai của các thành phần trong code. Dưới đây là một số điểm quan trọng về từng loại access modifer:
Private: Truy cập trong nội bộ lớp
Khi một thành phần được khai báo là private, nó chỉ có thể được truy cập từ bên trong lớp đó. Điều này có nghĩa là thành phần private không thể được truy cập từ lớp khác.
Public: Thành phần công khai, truy cập tự do từ bên ngoài
Public access modifier cho phép các thành phần được truy cập từ bất kỳ lớp nào trong chương trình Java. Điều này có nghĩa là các thành phần public có thể được truy cập một cách tự do từ bên ngoài.
Protected: Thành phần được bảo vệ, bị hạn chế truy nhập từ bên ngoài
Protected access modifier cho phép các thành phần được truy cập từ bên trong cùng package và từ các lớp con của package đó. Thành phần protected không thể được truy cập từ bên ngoài package.
Default: Truy cập trong nội bộ package
Default access modifier, cũng được gọi là package-private, cho phép các thành phần được truy cập từ các lớp trong cùng package. Không thể truy cập các thành phần default từ các lớp nằm trong package khác.
2. Access Modifier và tính kế thừa trong Java
Khi sử dụng tính kế thừa trong Java, các access modifier có một số qui tắc cần lưu ý:
- Các phương thức public trong một lớp cha cũng phải là public trong tất cả lớp con.
- Các phương thức protected trong một lớp cha phải là protected hoặc public trong các lớp con, không thể là private.
- Các phương thức không có access modifier (không sử dụng từ khóa nào) có thể là private trong các lớp con.
- Các phương thức private không thể được kế thừa và không có qui tắc nào áp dụng cho chúng.
Nếu bạn muốn tìm hiểu thêm chi tiết về từng access modifier, hình ảnh dưới đây sẽ giúp bạn visual hóa các khái niệm này:
Với các hiểu biết về private, public, protected, và default trong Java, bạn có thể bắt đầu sử dụng chúng để quản lý quyền truy cập và bảo vệ dữ liệu trong code của mình.