English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

معالجة الاستثناءات Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序访问类的私有成员

جميع الأمثلة Java

在此示例中,我们将学习访问Java中类的私有方法和属性。

要理解此示例,您应该了解以下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) {
    //创建一个Test对象
    Test test = new Test();
    //تعيين قيمة المتغير الخاص
    test.setAge(24);
    test.setName("w3codebox");
    //الحصول على قيمة المتغير الخاص
    System.out.println("العمر: " + test.getAge());
    System.out.println("الاسم: " + test.getName());
  }
}

نتائج ال输岀

العمر: 24
الاسم: w3codebox

في المثال السابق، لدينا متغيرات خاصة تسمى age و name. هنا، نحاول الوصول إلى المتغيرات الخاصة من فئة أخرى تسمى Main.

لقد استخدمنا طرق الحصول والتعيين لاستدعاء المتغيرات الخاصة. هنا،

  • طريقة تعيين - "setAge()" و "setName()" تعيين المتغيرات الخاصة

  • طريقة الحصول - "getAge()" و "getName()" تعود قيم المتغيرات الخاصة

مثال 2: استخدام الت反射 لاستدعاء الحقول والأساليب الخاصة

import java.lang.reflect.*;
class Test {
  //私有变量
  private String name;
  //私有方法
  private void display() {
    System.out.println("الاسم هو: " + name);
  }
}
class Main {
  public static void main(String[] args) {
    try {
      //创建一个Test对象
      Test test = new Test();
      //创建名为 obj 的对象
      Class obj = test.getClass();
      //访问私有变量
      Field field = obj.getDeclaredField("name");
      //使私有字段可访问
      field.setAccessible(true);
      //设置字段的值
      field.set(test, "w3codebox");
      //获取字段的值
      //并将其转换为字符串
      String value = (String)field.get(test);
      System.out.println("اسم: " + 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();
    }
  }
}

نتائج ال输岀

الاسم: w3codebox
اسم المетод: display    
معدل الوصول: private

في هذا المثال، لدينا حقل خاص بعنوان name ومетод خاص بعنوان display(). هنا، نستخدم الاستبصار لاستدعاء الحقول والمتغيرات الخاصة للفئة Test.

للتعرف على الاستبصار، يرجى زيارةJava Reflection (الاستبصار).

جميع الأمثلة Java