[quote=Nicolas Fernandes][quote=Gustavokt][quote=evertonsilvagomesjava]
LOL deselegante pq? Vc vai acessar metodos de instancia como entao? magia negra?[/quote]
Deselegante porque do meu ponto de vista, a classe que contém o main deveria ter variáveis e/ou métodos que eventualmente interferissem com a execução do método main(). Faz sentido eu criar uma instância da classe que contém o main só para usar o método dele? Será que você não poderia ter criado uma classe e encapsular essa lógica?
public class ClasseQueContemAlgumaLogica{
public Resultado facaAlgumaCoisa()...
}
...
public class Main
{
public static void main(String[] args)
{
ClasseQueContemAlgumaLogica instancia = new ClasseQueContemAlgumaLogica();
Resultado r = instancia.facaAlgumaCoisa();
...
}
}
É a mesma coisa quando falam de orientação a objeto em java. Você pode escrever um programa inteiro de forma procedural em java. Se dá para usar orientação a objeto, porque não usar? 
Mas isso é do meu ponto de vista. De fato, é possível fazer o que o Nicolas disse, mas eu não recomendaria (pelo menos nesse caso).
Everton, você está começando a programar em java ou isso foi apenas uma dúvida?
[/quote]
A questão não é falar sobre encapsulamento, sobre OO ou coisas similares. Nosso amigo queria saber só como faria para acessar, dentro do Main, um método não-estático.
xray_495
As classes que você criar não devem conter a palavra reservada static, mas sim os seus métodos. Você pode definir quais métodos que você queira que sejam chamados sem existir uma instância da classe. Um exemplo disso é o padrão Singleton, onde você criar um método estático para pegar a instância da classe, e o resto não-estático.
public class ClasseExemplo
{
public void mostrarMensagem()
{
String mensagem = "Esta é a minha mensagem.";
return mensagem;
}
pubic static int somarValores(int primeiroValor, int segundoValor)
{
int somaValores = primeiroValor + segundoValor;
return somaValores;
}
}
Para usar a classe…
public class Main
{
public static void main(String[] args)
{
String mensagem = ClasseExemplo.mostrarMensagem(); // Errado! Você precisa de uma instância para acessar este método.
String mensagem = new ClasseExemplo().mostrarMensagem(); // Assim funciona!
System.out.println(mensagem);
int somaValores = ClasseExemplo.somarValores(1, 2); // Assim funciona! Método estático é acessado só pela assinatura da classe.
int somaValores = new ClasseExemplo().somarValores(1, 2); // Errado!
System.out.println(somaValores);
}
}
Você pode acessar os métodos estáticos sem necessitar de uma instância da classe, mas os métodos que não são estáticos precisam dela, por exemplo![/quote]
Era isso que eu queria dizer, que dava para usar um exemplo melhor do que usar a classe do main, ainda mais se vai explicar para outra pessoa.