Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida implementação de interface

Pode-se dizer que quando uma classe implementa uma interface ela passa a ser do mesmo tipo que a interface?

No caso do exercício, no construtor da classe BalancoEmpresa abaixo, o parâmetro de chamada é do tipo ArmazenadorDeDividas.

public class BalancoEmpresa {

    private ArmazenadorDeDividas dividas;

    public BalancoEmpresa(ArmazenadorDeDividas dividas){
        this.dividas = dividas;
    }

Fique um pouco confuso porque na classe de teste abaixo não utilizei a interface e sim a classe que a implementa, no caso BancoDeDados. É isso mesmo?

public class TestaBanco {

    public static void main(String[] args) {

        BancoDeDados minhaConexao = new BancoDeDados("endereço","usuario","senha");

        BalancoEmpresa be = new BalancoEmpresa(minhaConexao);

        Documento cnpjCredor = new Cnpj("00.000.001/0001-01");

        Divida divida = new Divida();
        divida.setDocumentoCredor(cnpjCredor);
        divida.setCredor("Credor");
        divida.setTotal(3200);

        be.registraDivida(divida);

        Pagamento pagamento1 = new Pagamento();
        pagamento1.setValor(200);
        divida.registra(pagamento1);

        be.pagaDivida(divida.getDocumentoCredor(), pagamento1);

        minhaConexao.desconecta();



    }

}
2 respostas
solução!

Oi Rozenildo,

É isso mesmo. Ao colocar a interface na declaração do método, qualquer classe que a implemente pode ser passada como parâmetro. No caso, você pode passar BancoDeDados como você fez, ou outra classe qualquer do tipo:

public class Foo implements ArmazenadorDeDividas

Sim Rozenildo, você pode utilizar tanto a interface como uma classe mãe como tipo da sua implementação.