Java-program för åtkomst till privata medlemmar i en klass

I det här exemplet lär vi oss att komma åt privata metoder och fält för en klass i Java.

För att förstå detta exempel bör du ha kunskap om följande Java-programmeringsämnen:

  • Java-metoder
  • Java Access Modifiers

Exempel 1: Åtkomst till privata fält med getter- och settermetoder

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

Produktion

 Ålder: 24 Namn: Programiz

I exemplet ovan har vi privata variabler som heter ålder och namn. Här försöker vi komma åt privata variabler från andra klasser som heter Main.

Vi har använt metoden getter och setter för att komma åt privata variabler. Här,

  • settermetoderna setAge()och setName()initialiserar de privata variablerna
  • gettermetoderna getAge()och getName()returnerar värdet på privata variabler

Exempel 2: Åtkomst till det privata fältet och metoden med 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(); ) ) )

Produktion

 Namn: Programiz Metodnamn: visa Access Modifier: privat

I det här exemplet har vi ett privat fält med namnet och en privat metod som heter display(). Här använder vi reflektionen för att komma åt privata fält och metoder för klassprovet.

För att lära dig mer om reflektion, besök Java Reflection.

Intressanta artiklar...