0
0
Posts
NI
Nam ITnamnxit_1608

Private, Public, Protected và Default trong Java

Đăng vào 3 months ago

• 4 phút đọc

Chủ đề:

Java

Trong lập trình hướng đối tượng, việc kiểm soát quyền truy cập vào các thành phần của lớp là một phần quan trọng của việc thiết kế phần mềm. Java cung cấp bốn loại access modifiers (từ khóa phạm vi truy cập) để kiểm soát quyền truy cập này: private, public, protected, và default (không có từ khóa). Mỗi loại modifier này có phạm vi truy cập khác nhau, giúp lập trình viên kiểm soát việc truy cập vào các thành phần của lớp một cách linh hoạt và an toàn.

Private

Modifier private là loại hạn chế nhất, chỉ cho phép truy cập từ bên trong lớp mà nó được khai báo. Điều này đảm bảo rằng dữ liệu và phương thức được bảo vệ khỏi sự truy cập không mong muốn từ bên ngoài lớp, giúp tăng cường tính đóng gói và an toàn cho dữ liệu.

Ví dụ về Private

class Account {
    private double balance;

    public Account(double initialBalance) {
        if (initialBalance > 0) {
            balance = initialBalance;
        }
    }

    private void deductFees() {
        balance -= 20; // Giả sử phí hàng tháng là 20
    }

    public void displayBalance() {
        deductFees();
        System.out.println("Số dư hiện tại: " + balance);
    }
}

Trong ví dụ trên, phương thức deductFees() và biến balance được đánh dấu là private, nghĩa là chúng chỉ có thể được truy cập và sử dụng bên trong lớp Account.

Public

Modifier public có phạm vi truy cập rộng nhất. Một thành phần được khai báo là public có thể được truy cập từ bất kỳ đâu, bên trong hoặc bên ngoài lớp, từ lớp khác trong cùng một gói (package) hoặc từ một gói khác.

Ví dụ về Public

public class Car {
    public String model;
    public int year;

    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }

    public void displayDetails() {
        System.out.println("Model: " + model + ", Năm: " + year);
    }
}

Trong ví dụ này, tất cả các thành phần của lớp Car đều được khai báo là public, nghĩa là chúng có thể được truy cập và sử dụng từ bất kỳ đâu.

Protected

Modifier protected có phạm vi truy cập rộng hơn private nhưng hẹp hơn public. Các thành phần được khai báo là protected có thể được truy cập từ bên trong lớp mà chúng được khai báo, từ các lớp con của lớp đó, và từ các lớp khác trong cùng một gói.

Ví dụ về Protected

package vehicles;

public class Vehicle {
    protected String licensePlate;

    protected void startEngine() {
        System.out.println("Động cơ khởi động!");
    }
}

class Car extends Vehicle {
    public void display() {
        startEngine();
        System.out.println("Biển số xe: " + licensePlate);
    }
}

Trong ví dụ này, licensePlate và phương thức startEngine() được khai báo là protected, nghĩa là chúng có thể được truy cập từ lớp con Car.

Default (Package-Private)

Nếu một thành phần không được khai báo với bất kỳ access modifier nào, nó sẽ mặc định có modifier là default, còn được gọi là package-private. Điều này có nghĩa là thành phần đó chỉ có thể được truy cập từ bên trong gói mà nó được khai báo.

Ví dụ về Default

package library;

class Book {
    String title;

    void borrow() {
        System.out.println("Sách đã được mượn.");
    }
}

Trong ví dụ này, title và phương thức borrow() không có access modifier nào được khai báo, nên chúng mặc định là default. Điều này có nghĩa là chúng chỉ có thể được truy cập từ bên trong gói library.

Kết Luận

Việc hiểu rõ về các access modifiers trong Java là rất quan trọng để kiểm soát quyền truy cập vào các thành phần của lớp một cách chính xác và an toàn. Mỗi loại modifier có phạm vi truy cập và mục đích sử dụng riêng, giúp lập trình viên xây dựng các ứng dụng có cấu trúc tốt và dễ bảo trì.

Gợi ý câu hỏi phỏng vấn
Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào