Srs, boa tarde!
Estou estudando a melhor forma de programar usando as regras de ( Polimorfismo ). A seguir temos dois códigos, eles fazem exatamente as mesma coisa. Eu procurei seguir dois caminhos e gostaria de saber entre eles qual segue os conceitos principais de Polimorfismo.
Primeiro:
public class OperacaoMat extends Object
{
public double calcular( double x, double y )
{
return 0;
}
//Sobrescreve o método toString da Classe Object
@Override
public String toString()
{
return String.format("%s:%f");
}
}
public class Soma extends OperacaoMat
{
double soma=0;
//Sobrescreve o método Calcular da classe OperacaoMat
@Override
public double calcular( double x, double y )
{
soma = x + y;
return soma;
}
//Sobrescreve o método toString da Classe OperacaoMat
@Override
public String toString()
{
return String.format( "%s: %f",
"Resultado da Soma:", soma );
}//Fim do método toString
}
public class Multiplicacao extends OperacaoMat
{
double multi=0;
//Sobrescreve o método Calcular da classe OperacaoMat
@Override
public double calcular( double x, double y )
{
multi = x * y;
return multi;
}
//Sobrescreve o método toString da Classe OperacaoMat
@Override
public String toString()
{
return String.format( "%s: %f",
"Resultado da Multiplicação:", multi );
}//Fim do método toString
}
public class Operacao_Main
{
public static void main( String[] args )
{
Soma opSoma = new Soma();
Multiplicacao opMult = new Multiplicacao();
opSoma.calcular( 5,5 );
opMult.calcular( 5,5 );
System.out.println( opSoma.toString() );
System.out.println( opMult.toString() );
}
}
Agora vamos para segunda opção***
public class OperacaoMat extends Object
{
public double calcular( double x, double y )
{
return 0;
}
}
public class Soma extends OperacaoMat
{
public double calcular( double x, double y )
{
return x + y;
}
}
public class Multiplicacao extends OperacaoMat
{
public double calcular( double x, double y )
{
return x * y;
}
}
public class Operacao_Main
{
public static void calcule( OperacaoMat op, double x, double y )
{
System.out.println( op.calcular( x,y ) );
}
public static void main( String[] args )
{
calcule( new Soma(), 5, 5 );
calcule( new Multiplicacao(), 5, 5 );
}
}