Entendendo O.O. !?

non-static variable this cannot be referenced from a static context

Aparece o erro acima no seguinte fonte:

public class TesteConta {

public class Conta{
  public int numero;
  public double saldo;
}


public TesteConta() {
}

public static void main(String[] args) {
  Conta conta1 = new Conta();
  conta1.numero = 10;
  conta1.saldo  = 500;
}

}

Agora quando coloco a classe Conta como Static funciona(!).
E aí, a minha duvida aumentou mais ainda…
Pessoal, me de uma força! Sou programador e estou começando a aprender Java!

Obriagdo a todos!

Cara,

o erro diz que você não pode acessar uma variável estatica num contexto não estatico.

se quiser um conselho, use cada class num .java diferente, vai facilitar tua vida…

[]'s

Opa Curynga, Variáveis estáticas pretencem a classe, elas não precisam de uma instância para serem usadas. O mesmo vai para os métodos estáticos. Os métodos e variáveis não estáticos precisam de uma instância de objeto. Se você tentar usar uma variável não estática em um método estático o compilador vai lançar esse erro. Porque se uma variável não estatica, precisa de uma instância e um método estático pode ser chamado diretamente pelo nome da classe, vc concorda que tem alguma coisa errada? Ou não entendeu nada que eu falei? hjahahahaha Se não entendeu eu vou tentar mandar um link :wink:

Conta conta1 = new Conta();
O erro acontece na linha acima!

Entao pelo oq vc disseram, eu nao posso criar uma classe nao-estatica em um metodo ou classe estatica?!

Desde já agradeço!

Ola,

Vamos por parte, a classe publica esterna é TesteConta, que encapsula uma classe, tb publica Conta, então para vc de dentro de um contesto estatico acessar a classe, publica Conta, que não é estatica, precisa de uma instancia de TesteConta, então se vc fizer:

... Conta conta1 = (new TesteConta()).new Conta(); ...
Vai funfar,
Mas se vc declarar que a classe, encapsulada, Conta é estatica, realmente vai funcionar…