Dùng để khai báo cho những thành phần có thể truy cập được bởi các lớp khác thuộc cùng gói (package) và các lớp con.
Ví dụ:
Ở đây, ta định nghĩa một lớp Worker kế thừa từ lớp Employee đã được định nghĩa trong bước trên. Lớp Worker đã truy cập đến thuộc tính balance được khai báo là protected ở lớp Employee. Chương trình không báo lỗi, thực hiện tốt, vì lớp con truy cập đến thuộc tính protected của lớp cha là hợp lệ.
Dùng để khai báo cho những thành phần ó phạm vi truy cập rộng nhất. Những thành phần của lớp có khai báo public đều có thể truy cập được từ bất kỳ một lớp nào khác.
Ví dụ:
Ta có thể thấy, thuộc tính address của lớp Employee trong ví dụ trên được khai báo là public, nên có thể truy cập được bởi các lớp khác.
Khi ta không sử dụng bất kỳ một trong các access modifier nào đối với tên biến hoặc method, thì thành phần đó sẽ mặc định có mức độ truy cập là default.
Những thành phần này sẽ có thể truy cập được bởi các lớp cùng package, còn các lớp ở package khác sẽ không truy cập được. Mức truy cập default sẽ có phạm vi hẹp hơn so với mức protected. Mức protected có thể được truy cập được bởi các lớp con nữa, ngoài các lớp trong cùng package
Ví dụ:
Ta có thể thấy, thuộc tính name của lớp Employee được khai báo sẽ có mức truy cập default, có thể sử dụng được bởi lớp khác cùng package.
Tuy nhiên, nếu thuộc tính name được truy cập bởi một class nằm ở một package khác thì sẽ không hợp lệ, như hình bên dưới:
Ở đây chương trình thông báo lỗi, vì 2 lớp nằm ở 2 package khác nhau, nên không thể truy cập đến thuộc tính name (có mức truy cập default).
Chú ý: Đối với class, ta chỉ có thể khai báo là public hoặc không khai báo một access modifier nào.
Tony Hùng Cường