Acesso a variáveis de outras classes

7 respostas
C

Olá, tudo bem?

Como faço para acessar variável de outra classe? E se ela estiver no main…? Qual é/são a(s) melhor(es) forma(s)…?

Obs.: sei determinadas coisas, mas digamos que eu “tenha que ter” variável/is no main, etc…

Até…

Abraço!

7 Respostas

orlandocn

http://java.dzone.com/articles/getter-setter-use-or-not-use-0

U

Caucasian vc pode acessar as variáveis de uma classe de algumas formas.

1 - Seria instanciando as classes, ou seja, criar um objeto na Classe1 do tipo Classe2*;
2 - Utilizar o conceito de herança onde uma classe herda as variáveis e métodos de uma outra classe**.

Para isso vc deve criar as variáveis fora do main e iniciá-las no método construtor.

Não sei de sua necessidade, mas vc pode criar variáveis no main e repassar as instruções ao instanciar o objeto da outra classe.

*Dá uma olhada em visibilidade de variáveis(public, private…)
**Dá uma estudada em herança.

di.magdaleno

Você não pode acessar variáveis locais (Variáveis de métodos). Uma variável local nasce dentro do método e morre dentro do método. Em outras palavras, não é possível recuperar o valor de variáveis que forem declaradas dentro do método main() de outras classes.

Caso queira recuperar o valor de uma variável de outra classe precisará declará-la como uma variável estática ou de instância da classe.

Para saber mais busque apostilas sobre declarações e escopo de variáveis.

Espero ter ajudado!

C

Pessoal, muito obrigado! Era o que eu estava pensando mesmo ou, tvz., parecido… ^^

Mas ainda surge a questão: digamos que uma determinada classe seja instanciada em “vários locais” (se é que…). Recuperar o valor da variável que recebeu um valor específico “numa das instâncias” é possível noutra…?

Meio com dor de cabeça aqui, então, espero que entendam caso haja umas loucuras acima… Kkk… ^^

di.magdaleno
Caucasian:
Pessoal, muito obrigado! Era o que eu estava pensando mesmo ou, tvz., parecido... ^^

Mas ainda surge a questão: digamos que uma determinada classe seja instanciada em "vários locais" (se é que...). Recuperar o valor da variável que recebeu um valor específico "numa das instâncias" é possível noutra...?

Meio com dor de cabeça aqui, então, espero que entendam caso haja umas loucuras acima... Kkk... ^^


rsrsrs não sei se entendi mto bem a sua dúvida, mas vamos lá.

Supondo que vc tenha a classe A com o atributo x e queira acessá-la no main() da classe B:
class A {
    int x;
}
class B {
    public static void main(String[] args) {
        A a1 = new A(); // primeira instancia
        A a2 = new A(); // segunda instancia
        A a3 = new A(); // terceira instancia

        a1.x = 1;
        a2.x = 2;
        a3.x = 3;

        a2 = a1; // nesse momento a2 deixa de referenciar a segunda instancia da classe A e passa a referenciar a primeira (mesma instancia de a1)

        System.out.println(a2.x); // vai exibir 1
    }
}
Essa é uma forma de recuperar o valor de uma instancia para outra variável de referência. No entanto, se você estiver em outra classe e não possuir acesso a nenhuma variável de referência capaz de "alcançar" o objeto, não será possível recuperá-lo dessa forma.

Caso tenha, por exemplo, uma classe C que deseja acessar os valores de a1 o que você poderia fazer é serializar o objeto referenciado por a1 e depois deserializar na Classe em que deseja recuperá-lo. Não sei se é bem isso que você perguntou, mas se foi seria interessante dar uma estudada em serialização de objetos.

di.magdaleno
Caucasian:
Pessoal, muito obrigado! Era o que eu estava pensando mesmo ou, tvz., parecido... ^^

Mas ainda surge a questão: digamos que uma determinada classe seja instanciada em "vários locais" (se é que...). Recuperar o valor da variável que recebeu um valor específico "numa das instâncias" é possível noutra...?

Meio com dor de cabeça aqui, então, espero que entendam caso haja umas loucuras acima... Kkk... ^^


rsrsrs não sei se entendi mto bem a sua dúvida, mas vamos lá.

Supondo que vc tenha a classe A com o atributo x e queira acessá-la no main() da classe B:
class A {
    int x;
}
class B {
    public static void main(String[] args) {
        A a1 = new A(); // primeira instancia
        A a2 = new A(); // segunda instancia
        A a3 = new A(); // terceira instancia

        a1.x = 1;
        a2.x = 2;
        a3.x = 3;

        a2 = a1; // nesse momento a2 deixa de referenciar a segunda instancia da classe A e passa a referenciar a primeira (mesma instancia de a1)

        System.out.println(a2.x); // vai exibir 1
    }
}
Essa é uma forma de recuperar o valor de uma instancia para outra variável de referência. No entanto, se você estiver em outra classe e não possuir acesso a nenhuma variável de referência capaz de "alcançar" o objeto, não será possível recuperá-lo dessa forma.

Caso tenha, por exemplo, uma classe C que deseja acessar os valores de a1 o que você poderia fazer é serializar o objeto referenciado por a1 e depois deserializar na Classe em que deseja recuperá-lo. Não sei se é bem isso que você perguntou, mas se foi seria interessante dar uma estudada em serialização de objetos.

C

Show de bola, mas e quando há, por exemplo, uma classe que trata de uma janela com imagens e se tem de consultar valores da classe do Main ou mesmo outra que tem informações tipo quantidade de algo que não seja a classe principal? o.o

Criado 14 de março de 2013
Ultima resposta 15 de mar. de 2013
Respostas 7
Participantes 4