dúvidas sobre uso de "static"

2 respostas
G
primeiramente sei(+ ou -) para que serve esse modificador,  que tem um problema.


Criei umas classes para discipliana de matemática financeita, por exemplo:


a classe Capital(float juros, float taxa, float periodo)[o construtor leva 3 parametro] é declarada com publica e depois de instanciada eu uso o metodo publico getCapital que deveria me retornar um float com o capital cálculado com base nos parametros mas  um erro de compilação





abaixo: o fonte que  o erro





import formulas.*;// pacote com a classe Capital





public class Teste {





Capital c = new Capital(300f, 0.05f, 10f);





public static void main(String[] args) {


System.out.println(c.getCapital());


}


}





o erro segue abaixo:


Teste.java:8: non-static variable c cannot be referenced from a static context


System.out.println(c.getCapital());





OBS: se eu instanciar a classe Capital(,,) dentro do metodo main() funciona ou se eu declarar ela fora como estática


mas a minha dúvida é: se eu quiser declaras váriáveis fora do método main() para serem globais,  poderei usá-las nele se forem estáticas





se alguém puder me esclarecer isso ficaria muito agradecido

2 Respostas

F
Primeiro eu aconselho vc a dar uma lida em qq livro sobre java, para entender bem o conecito STATIC.


Vamos ao código:


public class Teste {


   Capital c = new Capital(300f, 0.05f, 10f);





   public static void main(String[] args) {


      System.out.println(c.getCapital());


   }


}


Não funciona pq vc precisa instanciar a classe Capital dentro do main, como vc mesmo  notou.





Até aqui não tem nada STATIC. Usando o método STATIC getCapital, ficaria +/- assim:


public class Teste {


   public static void main(String[] args) {


      System.out.println(Capital.calculaCapital( 300f, 0.05f, 10f));


   }


}


Obviamente o novo método, calculaCapital(x,x,x,), é estático.


Note que é o método q recebe os valores a serem calculados. Se vc quiser passar este valores para o construtor, eles precisam ser definidos como atributos estáticos tbm.
D
guipx;





Quando você está dentro de um método "static", no seu exemplo o método main





public static void main(){}





 podemos ter acesso a métodos ou variáveis do tipo static também.


assim para solucionar o seu problema, vc deve colocar o método getCapital como static  consequentemente a variavel capital também





Temos tb outra solução que foi explicado acima que é quando vc cria um objeto da classe e chama os metodos ou variaveis apartir dela





boa sorte
Criado 25 de junho de 2002
Ultima resposta 10 de dez. de 2002
Respostas 2
Participantes 3