Galera, porque esses métodos funcionam?
[code]public class Test1{
public static void main(String[] args) {
exibeResultado();
}
private static void exibeResultado() {
System.out.println("O valor da soma eh: " + soma(1, 2));
}
private static int soma(int numero1, int numero2) {
return numero1 + numero2;
}
}[/code]
mas esses não
[code]public class Test2{
public static void main(String args[]) {
int u = soma(8,6);
System.out.println("soma = "+u);
}
int soma(int c, int d) {
return c + d;
}
}[/code]
public class Test2{
public static void main(String args[]) {
Test2 t2 = new Test2();
int u = t2.soma(8,6);
System.out.println("soma = "+u);
}
int soma(int c, int d) {
return c + d;
}
}
(Obviamente há uma solução usando métodos estáticos, mas não a recomendo. Evite usar métodos estáticos dentro da medida do possível
)
Na classe Test2… dispara essa mensagem
error: non-static method soma(int,int) cannot be referenced from a static context
int u = soma(8,6);
[quote=javahunter]Na classe Test2… dispara essa mensagem
error: non-static method soma(int,int) cannot be referenced from a static context
int u = soma(8,6);[/quote]
na sua classe Test2 mude
int soma(int c, int d) {
return c + d;
}
por
static int soma(int c, int d) {
return c + d;
}
O erro é que voce nao pode acessar métodos não estáticos apartir de métodos estáticos.
Você entenderá melhor isso se pesquisar o que são métodos e atributos estáticos.
[quote=wellington.nogueira][quote=jks1903]…
O erro é que voce nao pode acessar métodos não estáticos apartir de métodos estáticos.
Você entenderá melhor isso se pesquisar o que são métodos e atributos estáticos.[/quote]Na verdade, acredito que ele saiba que colocando o static funciona (mesmo não sabendo o porque
).
[/quote]
heheh, vendo melhor acho que seja isso mesmo.
Em todo o caso, esse artigo explica bem, através dele que compreendi o que é static, deve ajudar.
http://www.guj.com.br/articles/121
[quote=wellington.nogueira][quote=javahunter]Ta certo então.
Obrigado pela ajuda.
[/quote]Mas você entendeu o que há de errado?[/quote]
Vou ler aquele artigo que o amigo postou
Se ficar alguma dúvida eu volto 
[quote=jks1903]…
O erro é que voce nao pode acessar métodos não estáticos apartir de métodos estáticos.
Você entenderá melhor isso se pesquisar o que são métodos e atributos estáticos.[/quote]Na verdade, acredito que ele saiba que colocando o static funciona (mesmo não sabendo o porque
).
[quote=javahunter]Na classe Test2… dispara essa mensagem
error: non-static method soma(int,int) cannot be referenced from a static context
int u = soma(8,6);[/quote]Atente-se ao post do entanglement onde ele criou uma variável t2 e, a partir dela, invocou o método soma.
[quote=javahunter]Ta certo então.
Obrigado pela ajuda.
[/quote]Mas você entendeu o que há de errado?