在此示例中,我們將學(xué)習(xí)訪問Java中類的私有方法和屬性。
要理解此示例,您應(yīng)該了解以下Java編程主題:
class Test { //私有變量 private int age; private String name; // 初始化 age public void setAge(int age) { this.age = age; } // 初始化 name public void setName(String name) { this.name = name; } // 訪問 age public int getAge() { return this.age; } // 訪問 name public String getName() { return this.name; } } class Main { public static void main(String[] args) { //創(chuàng)建一個Test對象 Test test = new Test(); // 設(shè)置私有變量的值 test.setAge(24); test.setName("nhooo"); //獲取私有變量的值 System.out.println("Age: " + test.getAge()); System.out.println("Name: " + test.getName()); } }
輸出結(jié)果
Age: 24 Name: nhooo
在上面的示例中,我們有名為age和name的私有變量。 在這里,我們試圖從其他名為Main的類訪問私有變量。
我們已經(jīng)使用getter和setter方法訪問私有變量。這里,
setter方法 - setAge() 和 setName()初始化私有變量
getter方法 - getAge() 和 getName()返回私有變量的值
import java.lang.reflect.*; class Test { //私有變量 private String name; //私有方法 private void display() { System.out.println("The name is " + name); } } class Main { public static void main(String[] args) { try { //創(chuàng)建一個Test對象 Test test = new Test(); //創(chuàng)建名為 obj 的對象 Class obj = test.getClass(); //訪問私有變量 Field field = obj.getDeclaredField("name"); // 使私有字段可訪問 field.setAccessible(true); //設(shè)置字段的值 field.set(test, "nhooo"); //獲取字段的值 //并將其轉(zhuǎn)換為字符串 String value = (String)field.get(test); System.out.println("Name: " + value); //訪問私有方法 Method[] methods = obj.getDeclaredMethods(); System.out.println("方法名稱: " + methods[0].getName()); int modifier = methods[0].getModifiers(); System.out.println("訪問修飾符: " + Modifier.toString(modifier)); } catch(Exception e) { e.printStackTrace(); } } }
輸出結(jié)果
Name: nhooo 方法名稱: display 訪問修飾符: private
在此示例中,我們有一個名為的私有字段name和一個名為display()的私有方法。在這里,我們使用反射來訪問類 Test 的私有字段和方法。
要了解反射,請訪問Java Reflection(反射)。