Program Java pentru a accesa membrii privați ai unei clase

În acest exemplu, vom învăța să accesăm metodele și câmpurile private ale unei clase în Java.

Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele despre următoarele subiecte de programare Java:

  • Metode Java
  • Modificatori de acces Java

Exemplul 1: Accesați câmpurile private folosind metode getter și 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()); ) )

Ieșire

 Vârstă: 24 Nume: Programiz

În exemplul de mai sus, avem variabile private numite vârstă și nume. Aici încercăm să accesăm variabilele private din altă clasă numită Main.

Am folosit metoda getter și setter pentru a accesa variabilele private. Aici,

  • metodele setter setAge()și setName()inițializează variabilele private
  • metodele getter getAge()și getName()returnează valoarea variabilelor private

Exemplul 2: Accesați câmpul privat și metoda folosind Reflecție

 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(); ) ) )

Ieșire

 Nume: Nume metodă programare: afișare Modificator acces: privat

În acest exemplu, avem un câmp privat numit nume și o metodă privată numită display(). Aici, folosim reflexia pentru a accesa câmpurile și metodele private ale clasei Test.

Pentru a afla despre reflecție, vizitați Reflecția Java.

Articole interesante...