Olá, João! Como vai?
Parabéns pela resolução da atividade!
Observei que você explorou o abstract para estruturar uma hierarquia de pagamentos com Java, utilizou muito bem a herança para especializar cada forma de pagamento e ainda compreendeu a importância do polimorfismo para permitir que cada classe implemente o cálculo de taxa e a confirmação de forma distinta.
Uma dica interessante para o futuro é aplicar interfaces quando quiser definir contratos comuns entre diferentes formas de pagamento, sem depender de uma classe abstrata. Assim:
package Pagamento;
public interface MetodoPagamento {
void confirmarPagamento();
double calcularTaxa();
}
public class Cartao implements MetodoPagamento {
private double valor;
public Cartao(double valor) {
this.valor = valor;
}
@Override
public void confirmarPagamento() {
System.out.printf("Pagamento de R$%.2f confirmado no Cartão (Taxa: R$%.2f)\n", valor, calcularTaxa());
}
@Override
public double calcularTaxa() {
return valor * 0.03;
}
}
Isso faz com que diferentes métodos de pagamento possam seguir o mesmo contrato, mantendo flexibilidade e boas práticas de orientação a objetos.
Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.
Fico à disposição! E se precisar, conte sempre com o apoio do fórum.
Abraço e bons estudos!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!