1
resposta

Parâmetro do tipo Tributável. Classe não implementa a classe Tributável.

Olá,

A minha dúvida é por que a classe Calculadoraimposto não precisa implementar a classe Tributábel, sendo que há um método que tem uma parâmetro do tipo Tributábel ?

public class CalculadoraImposto {

private double totalImposto = 0;

public void calculaImposto(Tributavel tributavel) {
    totalImposto += tributavel.calculaImposto();
}

}

1 resposta

Então, na criação de um método, os parâmetro que você define para ele são as 'exigências' do método. No caso do método calculaImposto(), ele 'exige' que sempre que ele for chamado por alguém seja passado para ele um parâmetro de um objeto do tipo Tributavel. Sendo assim, se você chamar o método calculaImposto() e passar uma String, um Integer ou, qualquer outro objeto que não seja um Tributavel o programa não compilará, pois esse método trabalha apenas com objetos do tipo Tributavel.

Por exemplo: se você chama um baterista e entrega para ele um objeto do tipo Flauta ele não saberá o que fazer, pois ele só trabalha com objetos do tipo Bateria ou objetos da 'familia' Bateria

Todas as classes que implementarem a interface Tributavel, serão reconhecidas pelo método como um objeto do tipo Tributavel. A grande sacada disso é que você não precisa criar um novo método para cada nova necessidade que surgir, pois a CalculadoraImposto não discerne Produto de Item, para ela, tudo é Tributavel