No exercicio 10 do curso de C# II está descrito o seguinte:
(```) interface ITributavel { double CalculaTributo(); }
class ContaPoupanca : Conta, ITributavel { // resto da classe aqui
public double CalculaTributo() { return this.Saldo * 0.02; } }
class ContaInvestimento : Conta, ITributavel { public double CalculaTributo() { return this.Saldo * 0.03; } }
class TotalizadorDeTributos { public double Total { get; private set; }
public void Acumula(ITributavel t) { Total += t.CalculaTributo(); } }
class Programa { static void Main(string[] args) { TotalizadorDeTributos t = new TotalizadorDeTributos(); ContaInvestimento ci = new ContaInvestimento(); ContaPoupanca cp = new ContaPoupanca();
ci.Deposita(100.0); cp.Deposita(100.0);
t.Acumula(ci); t.Acumula(cp);
Console.WriteLine("O total é: " + t.Total); } }(```)
Minha duvida é aqui:
(```) class TotalizadorDeTributos { public double Total { get; private set; }
public void Acumula(ITributavel t) { Total += t.CalculaTributo(); } (```)
Pelo que entendi, a classe ITributavel é uma interface e não pode ser instanciada, mas como pode entao o método Acumula receber uma instancia de ITributavel?
Alguem da um help?