Oie Andrew, tudo bem contigo?
O Nico não fez desse jeito porque o objetivo desse método não era retirar o imposto do saldo mas sim apenas pegar o valor do imposto e devolver ele. Tanto que depois esse método é chamado na "classe CalculadorDeImposto", pois ele devolve o valor do imposto e essa classe faz a soma de todo o imposto que deve ser pago da conta corrente e do seguro de vida.
Classe CalculadorDeImposto
public class CalculadorDeImposto {
private double totalImposto;
public void registra(Tributavel t) {
double valor = t.getValorImposto(); // getValorImposto é chamado e a variável valor guarda o retorno desse método.
this.totalImposto += valor; // é feito a soma do atributo totalImposto com a variável valor
}
public double getTotalImposto() {
return totalImposto; // retorna o total de imposto a ser pago, esse cálculo é feito da soma dos impostos de cada objeto que implementa a interface tributável que entra como parâmetro no método registra
}
}
Classe TesteTributaveis
public class TesteTributaveis {
public static void main(String[] args) {
ContaCorrente cc= new ContaCorrente(222, 333);
cc.deposita(100.0);
SeguroDeVida seguro = new SeguroDeVida();
CalculadorDeImposto calc = new CalculadorDeImposto();
calc.registra(cc); // o objeto cc é registrado no calculadorDeImposto, e dentro desse calculadorDeImposto, ele pega o valor que retorna do método getValorImposto e faz o calcula do total do imposto a ser pago.
calc.registra(seguro); o objeto seguro é registrado no calculadorDeImposto, e dentro desse calculadorDeImposto, ele pega o valor que retorna do método getValorImposto e faz o calcula do total do imposto a ser pago.
System.out.println(calc.getTotalImposto()); // mostra o total de imposto a ser pago, esse cálculo é feito da soma do imposto da conta corrente (cc) e do seguro de vida (seguro)
}
}
Concluindo, se você deseja descontar o imposto direto do saldo, sua lógica estaria correta sim, só que seria desnecessário ela retornar algo, podendo ser um método void, e claro, seria legal se você mudasse o nome do método, pois os getters sempre são usados apenas para retornar o valor de um atributo e não fazer uma lógica de desconto.
Espero que eu tenha ajudado, qualquer outra dúvida fico a disposição :)
Bons estudos!