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

8 respostas
javahunter
Galera, porque esses métodos funcionam?
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;  
    }
}
mas esses não
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;
	} 
}

8 Respostas

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

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);

jks1903

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);

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.

jks1903

wellington.nogueira:
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.

Na verdade, acredito que ele saiba que colocando o static funciona (mesmo não sabendo o porque :wink: ).

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

javahunter

Ta certo então.

Obrigado pela ajuda.

javahunter

wellington.nogueira:
javahunter:
Ta certo então.

Obrigado pela ajuda.

Mas você entendeu o que há de errado?

Vou ler aquele artigo que o amigo postou

Se ficar alguma dúvida eu volto :slight_smile:

WellingtonRamos

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.

Na verdade, acredito que ele saiba que colocando o static funciona (mesmo não sabendo o porque :wink: ).

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);

Atente-se ao post do entanglement onde ele criou uma variável t2 e, a partir dela, invocou o método soma.

WellingtonRamos

javahunter:
Ta certo então.

Obrigado pela ajuda.

Mas você entendeu o que há de errado?

Criado 26 de abril de 2013
Ultima resposta 26 de abr. de 2013
Respostas 8
Participantes 4