Boa noite pessoal. Fiz a implementação dos tributáveis antes de ver a solução do professor, daí o meu código ficou um pouco diferente, por exemplo: Coloquei o imposto de 1% para todos. Porém do jeito que está, para visualizar o total do imposto recolhido, tenho que fazer isto a partir de um objeto instanciado. segue o código:
public interface Tributavel {
    double getValorImposto();
}
public class CalculadorImposto {
    private static double totalImposto;
    public double getValorImposto(double valorACalcular) {
        double valorDoImposto = valorACalcular*0.01;
        totalImposto+=valorDoImposto;
        return valorDoImposto;
    }
    public double getTotalImposto() {
        return CalculadorImposto.totalImposto;
    }
}
public class ContaCorrente extends Conta implements Tributavel{
    CalculadorImposto calculador;
    public ContaCorrente(int agencia, int numero) {
        super(agencia, numero);
        calculador = new CalculadorImposto();
    }
    @Override
    public boolean saca(double valor) {
        double valorASacar = valor + .2;
        return super.saca(valorASacar);
    }
    @Override
    public void deposita(double valor) {
        super.saldo += valor;
    }
    @Override
    public double getValorImposto() {
        return this.calculador.getValorImposto(super.saldo);
    }
}
public class SeguroDeVida implements Tributavel {
    CalculadorImposto calculador;
    public SeguroDeVida() {
        calculador = new CalculadorImposto();
    }
    private double valorDoSeguro;
    public void setValorDoSeguro(double valorDoSeguro) {
        this.valorDoSeguro = valorDoSeguro;
    }
    public double getValorDoSeguro() {
        return valorDoSeguro;
    }
    @Override
    public double getValorImposto() {
        return calculador.getValorImposto(valorDoSeguro);
    }
}
public class AcaoBolsa implements Tributavel {
    CalculadorImposto calculador;
    public AcaoBolsa() {
        calculador = new CalculadorImposto();
    }
    private double saldoDaAcao;
    public void setSaldoDaAcao(double saldoDaAcao) {
        this.saldoDaAcao = saldoDaAcao;
    }
    public double getSaldoDaAcao() {
        return this.saldoDaAcao;
    }
    @Override
    public double getValorImposto() {
        return calculador.getValorImposto(saldoDaAcao);
    }
}
public class TestaConta {
    public static void main(String[] args) {
        ContaCorrente contaDoJoao = new ContaCorrente(2902, 258850);
        contaDoJoao.deposita(500);
        System.out.println("Saldo da conta do joão: " + contaDoJoao.getSaldo());
        System.out.println("Valor do imposto da conta do joao: "+ contaDoJoao.getValorImposto());
        AcaoBolsa acaoDoNenem = new AcaoBolsa();
        acaoDoNenem.setSaldoDaAcao(450000);
        System.out.println("Acao do neném: " + acaoDoNenem.getSaldoDaAcao());
        System.out.println("Imposto da acao do neném: " + acaoDoNenem.getValorImposto());
        SeguroDeVida seguroDaKatrine = new SeguroDeVida();
        seguroDaKatrine.setValorDoSeguro(980000);
        System.out.println("Valor do seguro: " + seguroDaKatrine.getValorDoSeguro());
        System.out.println("Valor do imposto do seguro: " + seguroDaKatrine.getValorImposto());
        System.out.println("Valor total do imposto: " + seguroDaKatrine.calculador.getTotalImposto());Como visto, tive que acessar o valor total do imposto a partir do seguroDaKatrine. Há alguma forma de acessar o total sem fazer isto?
 
            