Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa access modifiers và non-access modifiers trong Java?


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.