Trong ví dụ này, chúng ta sẽ học cách truy cập các phương thức và trường private của một lớp trong Java.
Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình Java sau:
- Phương thức Java
- Java Access Modifier
Ví dụ 1: Truy cập các trường riêng tư bằng phương thức getter và setter
class Test ( // private variables private int age; private String name; // initialize age public void setAge(int age) ( this.age = age; ) // initialize name public void setName(String name) ( this.name = name; ) // access age public int getAge() ( return this.age; ) // access name public String getName() ( return this.name; ) ) class Main ( public static void main(String() args) ( // create an object of Test Test test = new Test(); // set value of private variables test.setAge(24); test.setName("Programiz"); // get value of private variables System.out.println("Age: " + test.getAge()); System.out.println("Name: " + test.getName()); ) )
Đầu ra
Tuổi: 24 Tên: Programiz
Trong ví dụ trên, chúng ta có các biến riêng có tên tuổi và tên. Ở đây, chúng tôi đang cố gắng truy cập các biến private từ lớp khác có tên Main.
Chúng tôi đã sử dụng phương thức getter và setter để truy cập các biến private. Đây,
- các phương thức setter
setAge()
vàsetName()
khởi tạo các biến private - các phương thức getter
getAge()
vàgetName()
trả về giá trị của các biến private
Ví dụ 2: Truy cập trường riêng tư và phương pháp bằng Reflection
import java.lang.reflect.*; class Test ( // private variables private String name; // private method private void display() ( System.out.println("The name is " + name); ) ) class Main ( public static void main(String() args) ( try ( // create an object of Test Test test = new Test(); // create an object of the class named Class Class obj = test.getClass(); // access the private variable Field field = obj.getDeclaredField("name"); // make private field accessible field.setAccessible(true); // set value of field field.set(test, "Programiz"); // get value of field // and convert it in string String value = (String)field.get(test); System.out.println("Name: " + value); // access the private method Method() methods = obj.getDeclaredMethods(); System.out.println("Method Name: " + methods(0).getName()); int modifier = methods(0).getModifiers(); System.out.println("Access Modifier: " + Modifier.toString(modifier)); ) catch(Exception e) ( e.printStackTrace(); ) ) )
Đầu ra
Tên: Tên phương pháp Programiz: hiển thị Công cụ sửa đổi truy cập: riêng tư
Trong ví dụ này, chúng ta có một trường riêng được đặt tên và một phương thức riêng được đặt tên display()
. Ở đây, chúng tôi đang sử dụng phản chiếu để truy cập các trường riêng tư và các phương thức của Kiểm tra lớp.
Để tìm hiểu về phản xạ, hãy truy cập Java Reflection.