interface Comida { BigDecimal getPreco(); } class Ingrediente implements Comida { Comida componente; Ingrediente(Comida c) { this.componente = c; } BigDecimal getPreco() { return componente.getPreco() } } class Sanduiche implements Comida { BigDecimal preco; Sanduiche (preco) { this.preco = preco; } BigDecimal getPreco() { return preco; } } class SanduicheComIncremento extends Ingrediente { String nome; BigDecimal precoIncremento; SanduicheComIncremento(String nome, BigDecimal precoIncremento, Comida c) { super(c); } BigDecimal getPreco() { preco = super.getPreco(); preco = preco.add(precoIncremento); return preco; } } ========================= RegiĆ£o cliente s0 = Sanduiche(1.0); s1 = new SanduicheComIncremento("Com Cebola", 0.1, s0); s2 = new SanduicheComIncremento("Com Cheddar", 0.2, s1); println(s0.getPreco()); println(s1.getPreco()); println(s2.getPreco());