Métodos statics em class com e sem método main

3 respostas
entom

Porque para usar os métodos de uma determinada class que contenha o método main a assinatura dos métodos devem ser static? ja que classes sem o método main podemos realizar chamadas aos métodos sem que na assinatura dos métodos tenha “static”…

:oops:
:shock:

3 Respostas

lucifeler

Porque a classe main não pode ser intanciada portanto se voce quizer executar algum metodo dela em outra classe terá que usar um metodo estatico da classe main.
Isso ocorre em todas as classes que nao podem ser instanciadas.
Ja classes que podem ser instanciadas voce pode utilizar metodos estaticos ou não, ai vai do que voce esta programando.

Guilherme_Gomes

Você pode instanciar a classe que tem o método main. Mas lembre-se que, mesmo em uma classe qualquer, um método static só pode acessar variaveis e metodos static dela.

class Bla{
   String x = "lalala";
   public static void print(){
      System.out.println(x);//ERRO
   }
   public void printar(){
      System.out.println(x);//OK
   }
}

Com o método main é a mesma coisa, voce pode fazer o seguinte:

class Bla{
   String x = "lalala";
   

   public void printar(){
      System.out.println(x);//OK
   }

   public static void main(String args []){
      Bla bla = new Bla();
      bla.printar();
//Sem problemas...
   }
}
ViniGodoy

Os métodos só precisam ser estátic se você quiser chama-los diretamente do main, que também é static. Via de regra, métodos estáticos só podem chamar métodos estáticos.

Você pode, dentro do main, criar uma instância da classe e chamar métodos normais através da instância. Por exemplo:

public class Exemplo {
   private int x;
   private int y;
   public Exemplo(int x, int y) {
        this.x = x;
        this.y = y;
   }

   public int soma() { return x + y; }
   public int sub() { return x - y; }
   public int mult() { return x * y; }
   public int div() { return x / y; }

   public static void main(String args[]) {
        //Primeiro criamos a instância
        Exemplo exemplo = new Exemplo(3, 2);

        //Para depois chamar seus métodos
        System.out.println(exemplo.soma());
        System.out.println(exemplo.sub());
        System.out.println(exemplo.div());
        System.out.println(exemplo.mult());
   }
}
Criado 28 de dezembro de 2007
Ultima resposta 28 de dez. de 2007
Respostas 3
Participantes 4