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!