Java Modifiers

Java Modifiers

Trong ngôn ngữ lập trình Java, modifiers (bộ sửa đổi) là các từ khóa được sử dụng để xác định thông tin về quyền truy cập và hành vi của class, phương thức hoặc biến. Modifiers giúp kiểm soát khả năng truy cập và các thuộc tính khác của các thành phần này trong mã nguồn. Java có hai loại modifiers chính: Access Modifiers và Non-access Modifiers.

1. Access Modifiers

Access modifiers xác định mức độ truy cập của các thành phần trong chương trình. Java có bốn access modifiers:

  • public: Thành phần có thể được truy cập từ bất kỳ lớp nào.
  • protected: Thành phần có thể được truy cập từ các lớp cùng package hoặc từ các lớp kế thừa.
  • private: Thành phần chỉ có thể được truy cập từ trong cùng một lớp.
  • default (không khai báo): Nếu không có bất kỳ access modifier nào, thành phần chỉ có thể được truy cập từ các lớp cùng package.

2. Non-access Modifiers

Non-access modifiers thay đổi cách thức hoạt động của lớp hoặc thành phần mà nó áp dụng. Một số non-access modifiers phổ biến bao gồm:

  • static: Phương thức hoặc biến được khai báo là static sẽ thuộc về lớp thay vì thuộc về các đối tượng cụ thể của lớp đó.
  • final: Khi một biến được khai báo là final, giá trị của nó không thể thay đổi sau khi được gán. Lớp (class) được khai báo là final không thể được kế thừa.
  • abstract: Lớp hoặc phương thức được khai báo là abstract không thể được khởi tạo (với lớp) hoặc cần được cụ thể hóa (với phương thức) bởi các lớp con.
  • synchronized: Phương thức với modifier synchronized cho phép nhiều thread truy cập vào phương thức đó một cách an toàn.

Ví dụ về Access Modifiers

public class Example {
    public int publicVar;      // có thể truy cập từ bất kỳ đâu
    protected int protectedVar; // có thể truy cập từ các lớp cùng package hoặc kế thừa
    private int privateVar;    // chỉ có thể truy cập trong class Example
    int defaultVar;            // chỉ có thể truy cập trong cùng package
}

Ví dụ về Non-access Modifiers

public class MathOperations {
    // Phương thức static
    public static int add(int a, int b) {
        return a + b;
    }

    // Phương thức final
    public final int multiply(int a, int b) {
        return a * b;
    }

    // Phương thức abstract
    public abstract void display(); // Phải được triển khai trong lớp con
}

Java modifiers rất quan trọng trong việc lập trình hướng đối tượng và giúp tăng cường tính bảo mật và khả năng tái sử dụng mã nguồn. Sử dụng đúng modifiers sẽ giúp cho mã nguồn của bạn dễ quản lý hơn và dễ bảo trì hơn trong thời gian dài.