3
respostas

Objetos do Tipo Interface

Olá, Tenho uma dúvida, consultando a documentação do java api dentro do pacote java.sql temos a interface Connection e dentro da classe DriverManager temos o método estático getConnection que retorna uma referência para um objeto Connection. Isso significa que eu posso declarar uma variável de referência do tipo Connection para receber a referência que retorna no método getConnection? E quando eu chamo os métodos da inteface conection quem executa os métodos, já que as intefaces não tem métodos concretos?

Obrigado.

3 respostas

Olá Elton tudo bem?

Isso significa que eu posso declarar uma variável de referência do tipo Connection para receber a referência que retorna no método getConnection? Sim, você pode porquê é justamente o tipo que ele retorna.

E quando eu chamo os métodos da inteface conection quem executa os métodos, já que as intefaces não tem métodos concretos? Esse método te retorna um objeto concreto que implementa essa interface, por isso é possível declara - la como Connection pelo uso do polimorfismo. Qual objeto que tem essa implementação que ele devolve? a resposta é: depende, pois só sabemos que ele implementa Connection e é obrigado a ter todos os métodos que Connection possui. Só por curiosidade vou colocar o trecho do return do metodo getConnection: return (getConnection(url, info, Reflection.getCallerClass())); veja que a o objeto que ele te devolve é criado via Reflection, mas essa já uma outra dis cussão :)

Espero ter ajudado!

Então nesse caso quando eu chamo o Connectio con = DriverManager.getConnection o objeto não é um objeto Connection mas sim uma classe concreta que implementa a interface Connection ?

Isso, uma classe que implementa Connection com métodos que possuem implementação. Como esse objeto implementa Connection podemos afirmar que ele também é do tipo Connection, polimorfismo.