Estou com uma dúvida: Tenho esta super classe:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
class OrdemServico {
private Cliente cliente;
private Veiculo veiculo;
private Date data;
private String mecanico;
private List<Peca> pecas;
private List<Servico> servicos;
public OrdemServico(Cliente cliente, Veiculo veiculo, String mecanico, Date data) {
this.cliente = cliente;
this.veiculo = veiculo;
this.mecanico = mecanico;
this.data = data;
this.pecas = new ArrayList<>();
this.servicos = new ArrayList<>();
}
public void addPeca(Peca peca) {
pecas.add(peca);
}
public void addServico(Servico servico) {
servicos.add(servico);
}
public double calcularValorTotal() {
double valorTotal = 0.0;
for (Item peca : pecas) {
valorTotal += peca.getValor();
}
for (Item servico : servicos) {
valorTotal += servico.getValor();
}
return valorTotal;
}
}
E tenho duas classes filhas dela que herdam:
class Item {
private String codigo;
private String descricao;
private double valor;
public Item(String codigo, String descricao, double valor) {
this.codigo = codigo;
this.descricao = descricao;
this.valor = valor;
}
public String getCodigo() {
return codigo;
}
public String getDescricao() {
return descricao;
}
public double getValor() {
return valor;
}
}
E esta outra:
class Servico extends Item {
private int horasDeReparo;
public Servico(String codigo, String descricao, double valor, int horasDeReparo) {
super(codigo, descricao, valor);
this.horasDeReparo = horasDeReparo;
}
public int getHorasDeReparo() {
return horasDeReparo;
}
}
Como eu poderia reescrever este método, que transcrevo abaixo, em cada uma das subclasses de tal forma que eu tivesse o polimorfismo por sobrescrita ou sobrecarga:
public double calcularValorTotal() {
double valorTotal = 0.0;
for (Item peca : pecas) {
valorTotal += peca.getValor();
}
for (Item servico : servicos) {
valorTotal += servico.getValor();
}
return valorTotal;
}
De tal forma que eu tivesse na subclasse "peça" o cálculo total de peças, e na subclasse "serviço" o cálculo total com serviços, e o método da super classe tivesse a soma do total com peça e serviço. Todos os métodos com o mesmo nome e assinatura mas com implementação diferente. Por favor, poderiam me ajudar?