Procurei está duvida em outros tópicos deste fórum e em outros fóruns também, mas não obtive êxito, sendo assim vamos a minha dúvida.
Suponhamos as seguintes classes: Produto, ItemMercado, ItemMercadoPorPeso, ItemMercadoPorUnidade e suas implementações abaixo.
[b]public class Produto[/b] {
private String nomeproduto;
private int preco;
// Construtor com os dois parametros e getters e setters.
}
[b]public interface ItemMercado[/b] {
public abstract Produto getProduto();
public abstract [color=#FF0000]??????[/color] getQuantidade();
}
[b]public class ItemMercadoPorPeso implements ItemMercado[/b] {
private float quantidade;
public ItemVendaPorPeso(Produto produto, float quantidade) {
super(produto);
this.quantidade = quantidade;
}
@Override
public Produto getProduto() {
return produto;
}
[s]@Override[/s]
public float getQuantidade() {
return quantidade;
}
}
[b]public class ItemMercadoPorUnidade implements ItemMercado[/b]{
private final int quantidade;
public ItemVendaPorUnidade(Produto produto, int quantidade) {
super(produto);
this.quantidade = quantidade;
}
@Override
public Produto getProduto() {
return produto;
}
[s]@Override[/s]
public int getQuantidade() {
return quantidade;
}
}
A minha dúvida é sobre como devo fazer com este método getQuantidade() na interface para que eu possa programar orientado a interface dentro das demais classes do sistema: Estoque, Compras, Relatórios, Caixas, que teriam o atributo
ItemMercado item
e eu poderia receber tanto um ItemMercadoPorPeso ou ItemMercadoPorUnidade.
OBS1.: Sei que da forma que eu estou fazendo posso estar modelando as classes de forma errada, aceito sugestões.
OBS2.: Já vi em sistemas por aí, sendo implementado tudo só com a classe ItemMercado com quantidade float, porém didaticamente não é o certo.
Desde já, obrigado pela atenção.