Por que criar esse método estático?

2 respostas
guj1

Dada s classes abaixo, pergunto: o método poderia ser criado sem o static, como método de instância? Eu só queria entender porque nesse exemplo foi criado um método de classe e se poderia ser criado um método de instância?

public class OperacaoMatematica {
	
	double calcular(double x, double y) { return 0; }
}

public class Soma extends OperacaoMatematica{

	double calcular(double x, double y) {
		return x + y;
	}
}

public class Multiplicacao extends OperacaoMatematica{

	double calcular(double x, double y) {
		return x * y;
	}
}

public class OperacaoTest {
	
	public static void calcule(OperacaoMatematica o, double x, double y) { // Este é o método que estou questionando.
		System.out.println(o.calcular(x, y));
	}
	
	public static void main(String[] args) {
		calcule(new Soma(), 5, 5);
		calcule(new Multiplicacao(), 5, 5);
	}
}

2 Respostas

TerraSkilll
Para você não ter de criar uma instância da classe OperacaoTest para realizar o cálculo. Se o método não fosse static, você teria de fazer algo como:
public class OperacaoTest {  
  // removido o static
  public void calcule(OperacaoMatematica o, double x, double y) {
    System.out.println(o.calcular(x, y));  
  } 

public static void main(String[] args) {  
   // como o método calcule não é static, você precisa de uma instância de OperacaoTest 
  OperacaoTest ot = new OperacaoTest();

  ot.calcule(new Soma(), 5, 5);  
  ot.calcule(new Multiplicacao(), 5, 5);  
}

}
Abraço.
guj1

Entendi.
Porque método estático não pode chamar método não estático, correto?

Criado 4 de março de 2014
Ultima resposta 5 de mar. de 2014
Respostas 2
Participantes 2