1
resposta

Onde é lido qual imposto deve ser calculado ?

Boa tarde, entendi que é enviado o parâmetro para a função realizaCalculo(orcamento, imposto) porem como a interface Imposto sabe qual classe(iss ou icms) deve ser chamada?

1 resposta

Oi RITCHELLY

Em tempo de execução a interface vai receber um tipo ISS ou ICMS:

          public static void main(String[] args) {
              Imposto iss = new ISS();
              Imposto icms = new ICMS();

              Orcamento orcamento = new Orcamento(500.0);

          CalculadorDeImpostos calculador = new CalculadorDeImpostos();

          // Calculando o ISS
          calculador.realizaCalculo(orcamento, iss);

          // Calculando o ICMS        
          calculador.realizaCalculo(orcamento, icms);
          }

Apesar de "imposto" receber ambos os tipos, em tempo de execução vai ser sempre um dos dois tipos, então o Java vai rodar aquele que você passou.