Olá pessoal, bom como quero aprender bem como o java funciona eu semple pesquiso muito, e nas minhas buscas sobre o funcionamento de static me deparei com o artigo: http://www.guj.com.br/article.show.logic?id=121
Até aí tudo bem, mas quando cheguei ao final do artigo há um exemplo:
class Classe2
{
// Escreve alguma frase na tela
public static void escreve(String msg)
{
System.out.println(msg);
}
// Retorna a multiplicação de dois números int
public static int multiplica(int n1, int n2)
{
return (n1 * n2);
}
// Construtor, apenas para mostrar que
// ele nem chega ser chamado
public Classe2()
{
System.out.println("Construtor de Classe2");
}
}
public class TesteStatic2
{
public static void main(String args[])
{
Classe2.escreve(“Multiplicando 3 vezes 3:”);
int resultado = Classe2.multiplica(3, 3);
Classe2.escreve("Resultado: "+ resultado);
}
}
“Rode este programa e repare no resultado. Veja que o construtor da classe não foi chamado, pois não aparece na tela a string “Construtor de Classe2”. Repare também que não criamos instância alguma de Classe2 para chamar seus métodos…”
Fiquei sem intender como é possível ele chamar o método da Classe2 sem instanciar um objeto?, eu até sei que é porque é static, mas fiquei sem intender uma coisa, no caso a linha: “Classe2.escreve(“Multiplicando 3 vezes 3:”);” quer dizer simplesmente que chamei um método da Classe2, que no caso Classe2 ai não é um objeto apenas é uma “ponte” para o metodo da mesma, nada mais ?
Qual seria a real vantagem de fazer dessa forma ao invés de definir o metodo como não static, instanciar o objeto e chamar o metodo pelo objeto criado? se existir algum exemplo que eu possa intender a vantagem disso que por gentileza algume poderia mostra-lo para eu entender melhor.
Obrigado pela atenção de todos, sei que é uma dúvida besta mais fico aqui pensando e pensando bastante sobre isso.