Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Interface

Aqui, foi utilizado como parâmetro o tipo Tributavel item, no entanto, ele não é implementado pela classe. Como isso funciona? public class CalculadoraImposto {

private double totalImposto = 0;

public void calcularImposto(Tributavel item) {
    this.totalImposto += item.getValorImposto();
}

public double getTotalImposto() {
  return this.totalImposto;
}

}

1 resposta
solução!

Olá João, tudo bem?

Esse caso foi pra exemplificar que temos vários itens que geram imposto, como por exemplo, produtos, serviços. Então no exemplo temos a classe Produto que implementa Tributável:

public class Produto implements Tributavel {
//código omitido
}

E também poderíamos ter uma classe Servico que fizesse essa implementação de Tributavel, com uma forma de cálculo de imposto diferente:

public class Servico implements Tributavel {
//código omitido
}

Para ambos os casos, poderíamos utilizar a CalculadoraImposto, pois para serviço ela iria buscar o método implementado na classe Servico e para produtos ela iria chamar o método implementado na classe Produto.

Ao declarar uma variável com o tipo de uma interface (como é feito no método calcularImposto da classe CalculadoraImposto), podemos atribuir a essa variável qualquer objeto que implemente essa interface, ou seja, tanto Servico quanto Produto, citados no exemplo acima. Isso é útil quando queremos tratar vários objetos de classes diferentes de forma semelhante.

Caso a dúvida persista, não deixe de nos avisar por aqui.

Bons estudos! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!