primeiramente sei(+ ou -) para que serve esse modificador, só 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 dá um erro de compilação…
abaixo: o fonte que dá 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, só poderei usá-las nele se forem estáticas
se alguém puder me esclarecer isso ficaria muito agradecido
dúvidas sobre uso de "static"
G
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 já 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(){}
só 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
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo