Java đổi quyền truy cập

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Java Access Modifier, các loại của nó và cách sử dụng chúng với sự trợ giúp của các ví dụ.

Công cụ sửa đổi quyền truy cập là gì?

Trong Java, các công cụ sửa đổi truy cập được sử dụng để thiết lập khả năng truy cập (khả năng hiển thị) của các lớp, giao diện, biến, phương thức, hàm tạo, thành viên dữ liệu và phương thức setter. Ví dụ,

class Animal {
    public void method1() {...}

   private void method2() {...}
}

Trong ví dụ trên, chúng ta đã khai báo 2 phương thức: method1 () và method2 (). Đây,

  • method1 is public – This means it can be accessed by other classes.
  • method2 is private – This means it can not be accessed by other classes.

Lưu ý từ khóa publicvà private. Đây là các công cụ sửa đổi quyền truy cập trong Java. Chúng còn được gọi là công cụ điều chỉnh khả năng hiển thị.

Lưu ý : Bạn không thể đặt công cụ sửa đổi truy cập của các phương thức getters.

Các loại công cụ sửa đổi quyền truy cập

Trước khi tìm hiểu về các loại công cụ sửa đổi quyền truy cập, hãy đảm bảo rằng bạn biết về các Gói Java .

Có bốn từ khóa bổ trợ truy cập trong Java và chúng là:

ModifierDecfscription
Defaultdeclarations are visible only within the package (package private)
Privatedeclarations are visible within the class only
Protecteddeclarations are visible within the package or all subclasses
Publicdeclarations are visible everywhere

Công cụ sửa đổi quyền truy cập mặc định

Nếu chúng tôi không chỉ định rõ ràng bất kỳ công cụ sửa đổi truy cập nào cho các lớp, phương thức, biến, v.v., thì theo mặc định, công cụ sửa đổi truy cập mặc định được coi là. Ví dụ,

package defaultPackage;
class Logger {
    void message(){
        System.out.println("This is a message");
    }
}

Ở đây, lớp Logger có công cụ sửa đổi quyền truy cập mặc định. Và lớp được hiển thị cho tất cả các lớp thuộc gói defaultPackage . Tuy nhiên, nếu chúng tôi cố gắng sử dụng lớp Logger trong một lớp khác bên ngoài defaultPackage, chúng tôi sẽ gặp lỗi biên dịch.

Công cụ sửa đổi quyền truy cập riêng tư

Khi các biến và phương thức được khai báo private, chúng không thể được truy cập bên ngoài lớp. Ví dụ,

class Data {
    // private variable
    private String name;
}

public class Main {
    public static void main(String[] main){

        // create an object of Data
        Data d = new Data();

        // access private variable and field from another class
        d.name = "Programiz";
    }
}

Trong ví dụ trên, chúng ta đã khai báo một biến private có tên là tên và một phương thức private có tên display(). Khi chúng tôi chạy chương trình, chúng tôi sẽ gặp lỗi sau:

Main.java:18: error: name has private access in Data
        d.name = "Programiz";
         ^

Lỗi được tạo ra bởi vì chúng tôi đang cố gắng truy cập vào biến riêng và phương thức riêng của lớp Dữ liệu từ lớp Chính .

Bạn có thể tự hỏi điều gì sẽ xảy ra nếu chúng ta cần truy cập các biến riêng tư đó. Trong trường hợp này, chúng ta có thể sử dụng phương thức getters và setters. Ví dụ,

class Data {
    private String name;

    // getter method
    public String getName() {
        return this.name;
    }
    // setter method
    public void setName(String name) {
        this.name= name;
    }
}
public class Main {
    public static void main(String[] main){
        Data d = new Data();

        // access the private variable using the getter and setter
        d.setName("Programiz");
        System.out.println(d.getName());
    }
}

Đầu ra :

The name is Programiz

Trong ví dụ trên, chúng ta có một biến private có tên là name . Để truy cập biến từ lớp ngoài, chúng ta đã sử dụng các phương thức: getName()và setName(). Các phương thức này được gọi là getter và setter trong Java.

Ở đây, chúng ta đã sử dụng phương thức setter ( setName()) để gán giá trị cho biến và phương thức getter ( getName()) để truy cập biến.

Chúng tôi đã sử dụng thistừ khóa bên trong setName () để tham chiếu đến biến của lớp. Để tìm hiểu thêm về từ khóa này, hãy truy cập Java Từ khóa này .

Lưu ý : Chúng ta không thể khai báo các lớp và giao diện là riêng tư trong Java. Tuy nhiên, các lớp lồng nhau có thể được khai báo là private. Để tìm hiểu thêm, hãy truy cập Java lồng nhau và lớp bên trong .

Công cụ sửa đổi quyền truy cập được bảo vệ

Khi các phương thức và thành viên dữ liệu được khai báo protected, chúng ta có thể truy cập chúng trong cùng một gói cũng như từ các lớp con. Ví dụ,

class Animal {
    // protected method
    protected void display() {
        System.out.println("I am an animal");
    }
}

class Dog extends Animal {
    public static void main(String[] args) {

        // create an object of Dog class
        Dog dog = new Dog();
         // access protected method
        dog.display();
    }
}

Đầu ra :

I am an animal

Trong ví dụ trên, chúng ta có một phương thức bảo vệ có tên display()bên trong lớp Animal . Lớp Animal được kế thừa bởi lớp Dog . Để tìm hiểu thêm về kế thừa, hãy truy cập Kế thừa Java .

Sau đó, chúng tôi tạo một đối tượng dog của lớp Dog . Sử dụng đối tượng mà chúng tôi đã cố gắng truy cập vào phương thức được bảo vệ của lớp cha.

Vì các phương thức được bảo vệ có thể được truy cập từ các lớp con, chúng ta có thể truy cập phương thức của lớp Động vật từ lớp Chó .

Lưu ý : Chúng ta không thể khai báo các lớp hoặc giao diện protectedtrong Java.

Công cụ sửa đổi quyền truy cập công cộng

Khi các phương thức, biến, lớp, v.v. được khai báo public, thì chúng ta có thể truy cập chúng từ bất cứ đâu. Công cụ sửa đổi quyền truy cập công cộng không có giới hạn phạm vi. Ví dụ,

// Animal.java file
// public class
public class Animal {
    // public variable
    public int legCount;

    // public method
    public void display() {
        System.out.println("I am an animal.");
        System.out.println("I have " + legCount + " legs.");
    }
}

// Main.java
public class Main {
    public static void main( String[] args ) {
        // accessing the public class
        Animal animal = new Animal();

        // accessing the public variable
        animal.legCount = 4;
        // accessing the public method
        animal.display();
    }
}

Đầu ra :

I am an animal.
I have 4 legs.

Đây,

  • The public class Animal is accessed from the Main class.
  • The public variable legCount is accessed from the Main class.
  • The public method display() is accessed from the Main class.

Access Modifier Được tóm tắt trong một hình

Khả năng truy cập của tất cả các Công cụ sửa đổi quyền truy cập trong Java

Các công cụ sửa đổi truy cập chủ yếu được sử dụng để đóng gói. Tôi có thể giúp chúng tôi kiểm soát phần nào của chương trình có thể truy cập vào các thành viên của một lớp. Vì vậy, việc sử dụng sai dữ liệu có thể được ngăn chặn. Để tìm hiểu thêm về đóng gói, hãy truy cập Java Encapsulation .









Gõ tìm kiếm nhanh...