Método não compila (non-static method)

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 :slight_smile: )

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 :wink: ).
[/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

Ta certo então.

Obrigado pela ajuda.

[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 :slight_smile:

[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 :wink: ).

[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?