Access Modifier trong Java là gì? Hướng dẫn sử dụng chi tiết
Có rất nhiều bạn mới học lập trình bằng ngôn ngữ lập trình Java và băn khoăn khi bắt gặp cụm từ Private, Public, Protected và Default trong Java. Chúng được dùng để chỉ định các mức truy cập cho các lớp, các hàm tạo và các method hay còn được hiểu là công cụ sửa đổi truy cập. Để có thể hiểu rõ hơn về những công cụ này, hãy cùng Bizfly Cloud phân tích trong bài viết này nhé.
Access Modifier trong Java là gì?
Access Modifier là tên gọi chung để chỉ về các công cụ sửa đổi Private, public, protected và default trong Java. Trong đó, “Modifier” là 1 từ hoặc cụm từ mô tả có thể thay đổi hoặc sửa đổi nghĩa của 1 từ hoặc cụm từ khác bằng nhiều cách khác nhau. Trong Java, Modifier dùng để đặt mức truy cập cho các class, field, constructor. Access Modifier giúp cập nhật giá trị của 1 biến. Lấy ví dụ cho dễ hiểu như lệnh public dưới đây.
public class <tên_class>
Thì từ khóa “public” là 1 kiểu sửa đổi truy cập trong Java.
“Access modifier” được dùng trước các khai báo của 1 class, variable hay method thể hiện khả năng truy cập của class, variable hay method đó. Với class thì ta chỉ có 2 loại Access modifier là public và default nhưng với variable và method thì ta có 4 access modifier là public, protected, default, private. Trong đó giá trị của các biến được hiểu như sau:
Private: Chỉ được truy cập trong nội bộ lớp
Public: Có thành phần công khai và có thể truy cập tự do từ bên ngoài
Protected: Có thành phần được bảo vệ, việc truy cập từ bên ngoài bị hạn chế
Default: Chỉ được truy cập trong nội bộ package
Trong phần tiếp theo, chúng ta cùng tìm hiểu chi tiết về chi tiết các thành phần Access Modifier trong Java nhé.
Các loại Access Modifier
Như đã đề cập ở trên, Private, Public, Protected và Default trong Java đều có thể được gọi chung là Access Modifier. Vì thế, khi đi vào chi tiết phân loại chúng ta sẽ tìm hiểu lần lượt về các thành phần này nhé.
1. Private Access Modifier
Trong 4 loại Private, Public, Protected và Default trong Java thì Private Access Modifier là công cụ có phạm vi truy cập mang tính hạn chế nhất. Vì thế các method, variable và constructor nếu được khai báo private thì chỉ có thể được truy cập trong chính lớp khai báo đó.
Vì đặc điểm trên nên lớp và interface không thể là private đồng thời biến được khai báo private có thể được truy cập bên ngoài chỉ khi có tạo method public getter cho biến đó tại lớp đó.
Trong Java, khi sử dụng Private Access Modifier là để 1 đối tượng bao đóng chính nó đồng thời ẩn dữ liệu với bên ngoài giúp tạo tính an toàn dữ liệu với bên ngoài.
2. Public Access Modifier
Ngược lại với Private Access Modifier thì thành phần Public trong Java có thể truy cập được ở bất cứ đâu. Trong tất cả các Modifier thì nó có phạm vi rộng nhất.
Khi các class, method, constructor, interface, ...mà được khai báo public thì sẽ được truy cập từ bất cứ class nào khác. Điều này đồng nghĩa với việc các trường, method và khối được khai báo bên trong 1 lớp public có thể được truy cập ở bất cứ lớp nào khác. Tuy nhiên, nếu như class public mà người dùng đang truy cập nằm trong 1 package khác thì bản thân lớp này vẫn cần được import trước khi có thể truy cập.
3. Protected Access Modifier
Trong 4 loại Private, Public, Protected và Default trong Java thì Protected Access Modifier quy định việc có thể truy cập bên trong package và bên ngoài package chỉ khi thông qua tính kế thừa. Lớp và interface không thể áp dụng được thành phần Protected. Các method và field thì có thể khai báo protected ngoại trừ việc class và field đó nằm trong 1 interface thì sẽ không khai báo là protected được.
4. Default Access Modifier
Nếu như chúng ta không khai báo rõ ràng 1 Access Modifier (Private, Public, Protected và Default trong Java) cho một lớp, trường (field), method, ...thì theo mặc định nó được xem là default. Và khi Access Modifier là Default thì các lớp, trường (field), method,... chỉ có thể truy cập được từ bên trong package.
Giả sử chúng ta có 2 package và các class của 2 gói này đều là default Access Modifier. Khi cố gắng truy cập 1 class của package này từ package kia thì hệ thống sẽ báo lỗi “Compile time error” nghĩa là hệ thống sẽ báo lỗi không truy cập được.
Access Modifier và tính kế thừa trong Java
Khi khai báo các method là public trong 1 class cha thì các method trong tất cả các class con cũng sẽ là public.
Khi khai báo các method là protected trong 1 class cha thì các method trong các class con phải là protected hoặc là public. Chúng không thể là private.
Nếu không sử dụng modifier nào trong các method được khai báo trong 1 class cha thì method trong các class con có thể được khai báo là private.
Không có quy tắc nào cho các method được khai báo là private vì chúng không có tính kể thừa.
Đến đây có lẽ bạn đã hiểu được Access Modifier là gì, cùng với các thành phần Private, Public, Protected và Default được quy định trong Java. Hy vọng bài viết ngắn này có thể cung cấp cho bạn những kiến thức cần thiết cơ bản trong công cuộc chinh phục ngôn ngữ lập trình Java của mình nhé. Chúc bạn thành công.