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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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.