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
- Điều này có nghĩa là nó có thể được truy cập bởi các lớp khác. - method2 is
private
- Điều này có nghĩa là nó không thể được truy cập bởi các lớp khác.
Lưu ý từ khóa public
và 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ụ sửa đổi 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ề Gói Java.
Có bốn từ khóa bổ trợ truy cập trong Java và chúng là:
bổ nghĩa | Sự miêu tả |
Mặc định | khai báo chỉ hiển thị trong gói (gói riêng tư) |
Riêng tư | khai báo chỉ hiển thị trong lớp |
Được bảo vệ | khai báo có thể nhìn thấy trong gói hoặc tất cả các lớp con |
Công cộng | tuyên bố hiển thị ở mọi nơi |
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 này đượ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 :
Tên là 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 this
từ 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 Nested và Inner Class.
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 :
Tôi là một con vật
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 Java Inheritance.
Sau đó, chúng tôi tạo một đối tượng dog của lớp Dog. Sử dụng đối tượng, 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 Animal từ lớp Dog.
Lưu ý : Chúng ta không thể khai báo các lớp hoặc giao diện protected
trong 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 :
Tôi là một con vật. Tôi có 4 chân.
Đây,
- Lớp công khai Animal được truy cập từ lớp Chính.
- Biến công khai legCount được truy cập từ lớp Chính.
- Phương thức public
display()
được truy cập từ lớp Main.
Access Modifier Được tóm tắt trong một hình

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 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.