Variável Estática

4 respostas
dntalemao

Galera, por que quando um método static usa uma variável de instância, essa variável precisa ser static tbém? Já o inverso funciona… um método não static pode acessar uma variável static… Li que as variáveis static são alocadas antes mesmo da criação de um objeto, isso procede?

Obrigado!

4 Respostas

Rodrigo_Sasaki

Pense no conceito.

Uma variável de instância precisa do que? de uma instância, precisa existir um objeto dessa classe, e esse objeto terá essa variável.

Uma variável estática é uma variável da classe, portanto a classe só precisa ter sido carregada pelo ClassLoader, não é necessário ter uma instância para acessá-la.

portanto sempre que você tiver uma instância de uma classe, esta classe estará carregada, e as variáveis estáticas serão disponíveis.

Agora nem sempre que você tiver uma classe carregada, terá uma instância dessa classe, por isso não pode acessar uma variável de instância.

E se for pensar também não faz sentido, não tem como você em um contexto estático, saber qual instância você vai usar, a não ser que tenha recebido por parâmetro.

Fez sentido? até eu me enrolei hehehe

dntalemao

pois é, realmente dá um nó na cabeça! Eu pensei nessas coisas, creio também que o compilador iria ficar confuso, pois ao acessar um método static direto pela classe, e dentro desse método ele solicitar acesso a uma VI, esta VI precisaria estar alocada com endereçamento da classe, se não como ele saberia qual VI usar?

int i=10*Math.random();

Usando a classe Math e seu método static, as variáveis de classe precisam estar na memória para serem usadas.

meio confuso… mas eu acho que entender esses conceitos é fundamental rs

Rodrigo_Sasaki
Então. Não tem como acessar uma variável de instância em um método estático, a não ser que ela seja enviada por parâmetro ao método.
public class Pessoa{

    public static void metodo(Pessoa pessoa){
        System.out.println(pessoa); // acessando variável de instância
    }
  
}
dntalemao

entendi, pois o método vai receber a referência.
valeu mesmo digaoneves

Criado 20 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 4
Participantes 2