Danh sách như sau
- public: nếu có access modifier này thì tên file phải trùng tên class hoặc interface, enum, đuôi .java (Còn gọi là top-level)
- protected: Dùng được khi là nested type
- private: Dùng được khi là nested type
- (không chỉ định, default): trong cùng package có thể truy cập
Một số access modifier khác
Modifier | Class | Interface | Enum |
abstract | phải được implement trước khi sử dụng (extends, anonymous) | không cần thiết nhưng không lỗi compile | Không được phép |
static | không được phép cho class top-level | không được phép cho interface top-level Không cần thiết với inner interface nhưng không lỗi compile | không được phép cho enum top-level Không cần thiết với inner enum nhưng không lỗi compile |
final | được phép (không cho phép kế thừa) | không được phép | không được phép |
strictfp | cho phép (liên quan đến floating-point), bất cứ thành phần nào sử dụng float, double sẽ có ảnh hưởng | được phép | được phép |
Một số trường hợp dùng access modifier lỗi
Code | Giải thích |
private final class Test{} | private không được phép cho top-level |
protected abstract class Test{} | tương tự với private |
final abstract class Test{} | không được phép kết hợp abstract với final |
static final class Test{} | static không được phép cho top-level |
final public final class Test{} | duplicate modifier |