Access Modifiers
Access modifiers là các từ khóa dùng với classes, variables, methods, và constructors để kiểm soát mức độ truy cập của chúng.
Có bốn access modifiers trong Java.
Default
Khi không chỉ định access modifier, Java coi là default modifier. Phạm vi của default modifier giới hạn trong package.Public
Phạm vi của public modifier là truy cập mọi nơi, kể cả bên ngoài package.Private
Phạm vi của private modifier là truy cập trong chính class đó.Protected
Phạm vi của protected modifier giới hạn trong package và tất cả subclasses.
Non-access Modifiers
Non-access modifiers là những từ khóa không liên quan đến mức độ truy cập nhưng cung cấp chức năng đặc biệt khi chỉ định.
Final
Final keyword dùng với variable, method hoặc class. Nó ngăn chặn nội dung bị sửa đổi. Khi khai báo với class, nó ngăn class bị extend.Static
Static modifier dùng với class variables và methods có thể truy cập không cần instance của class. Static variables chỉ có single storage. Tất cả objects chia sẻ single storage của static variable. Chúng có thể truy cập trực tiếp không cần object. Static methods cũng có thể khai báo. main() method là static method phổ biến. Static blocks cũng có thể khai báo và thực thi trước main() method.Abstract
Abstract dùng với class và methods. Abstract class không bao giờ được instantiate và mục đích chỉ để extend. Abstract methods khai báo không có body và kết thúc bằng semicolon. Nếu class chứa abstract method, nó cũng phải được chỉ định là abstract. Class extend abstract class phải implement tất cả abstract methods của nó.Synchronized
Chỉ ra method chỉ có thể được truy cập bởi một thread tại một thời điểm.Transient
Instance variable được đánh dấu transient để báo JVM bỏ qua variable đó khi serialize object chứa nó.Volatile
Volatile keyword dùng để đánh dấu java variable là "được lưu trong main memory". Nghĩa là mọi read của volatile variable sẽ đọc từ main memory của máy tính chứ không từ CPU cache và write vào volatile variable sẽ ghi vào main memory không chỉ CPU cache.Strictfp
Strictfp keyword trong java đảm bảo bạn sẽ nhận được cùng kết quả trên mọi platform nếu thực hiện operations trên floating-point variable.