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

Tutoriais Básicos de Java

Controle de fluxo Java

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceções Java

Java Lista (List)

Java Fila (Queue)

Conjunto Java Map

Conjunto Java Set

Java Entrada e Saída (I/O)

Reader Java/Writer

Outros tópicos Java

Acesso de programas Java aos membros privados da classe

Exemplos Java Completo

Neste exemplo, vamos aprender a acessar métodos e atributos privados de classes em Java.

Para entender este exemplo, você deve saber o seguinteProgramação JavaTema:

Exemplo1Acesse propriedades privadas usando métodos getter e setter

class Test {
  //Variável privada
  private int age;
  private String name;
  // Inicialização age
  public void setAge(int age) {
    this.age = age;
  }
  // Inicialização name
  public void setName(String name) {}}
    this.name = name;
  }
  // Acessar age
  public int getAge() {
    return this.age;
  }
  // Acessar name
  public String getName() {
    return this.name;
  }
}
class Main {
  public static void main(String[] args) {
    //Criar um objeto Test
    Test test = new Test();
    // Definir o valor da variável privada
    test.setAge(24);
    test.setName("w3codebox");
    //Obter o valor da variável privada
    System.out.println("Idade: " + test.getAge());
    System.out.println("Nome: " + test.getName());
  }
}

Resultados de Saída

Idade: 24
Nome: w3codebox

No exemplo acima, temos variáveis privadas chamadas age e name. Aqui, tentamos acessar variáveis privadas de outras classes chamadas Main.

Já usamos métodos getter e setter para acessar variáveis privadas. Aqui,

  • Métodos setter - setAge() e setName() inicializam as variáveis privadas

  • Métodos getter - getAge() e getName() retornam os valores das variáveis privadas

Exemplo2:Usar reflexão para acessar campos e métodos privados

import java.lang.reflect.*;
class Test {
  //Variável privada
  private String name;
  //Método privado
  private void display() {
    System.out.println("O nome é " + name);
  }
}
class Main {
  public static void main(String[] args) {
    try {
      //Criar um objeto Test
      Test test = new Test();
      //Criar um objeto chamado obj
      Class obj = test.getClass();
      //Aceder ao variável privado
      Field field = obj.getDeclaredField("name");
      // Tornar o campo privado acessível
      field.setAccessible(true);
      //Definir o valor do campo
      field.set(test, "w3codebox");
      //Obter o valor do campo
      //e converta em string
      String value = (String)field.get(test);
      System.out.println("Nome: " + value);
      //Aceder ao método privado
      Method[] methods = obj.getDeclaredMethods();
      System.out.println("Nome do Método: ", + methods[0].getName());
      int modifier = methods[0].getModifiers();
      System.out.println("Modificador de Acesso: ", + Modifier.toString(modifier));
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
}

Resultados de Saída

Nome: w3codebox
Nome do Método: display    
Modificador de Acesso: private

Neste exemplo, temos um campo privado chamado name e um método privado chamado display(). Aqui, usamos a reflexão para acessar o campo privado e o método da classe Teste.

Para entender a reflexão, acesseJava Reflection (Reflexão).

Exemplos Java Completo