Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 程序訪問類的私有成員

Java 實(shí)例大全

在此示例中,我們將學(xué)習(xí)訪問Java中類的私有方法和屬性。

要理解此示例,您應(yīng)該了解以下Java編程主題:

示例1:使用getter和setter方法訪問私有屬性

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()返回私有變量的值

示例2:使用反射訪問私有字段和方法

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(反射)

Java 實(shí)例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清