Leandro,
Esta � uma das maravilhas do polimorfismo. O m�todo db.executeQuery(...)
retorna um objeto de uma classe concreta que implementa os m�todos da
interface ResultSet. N�o importa qual objeto o m�todo executeQuery retorna.
O que interessa � que
se este objeto implementa a interface ResultSet. Para o caso espec�fico do
JDBC, que � baseado em interfaces seria mais f�cil entender o que ocorre com
um exemplo :
Imagine que existam (e na realidade existem) as implementa��es para Oracle e
SQLServer da API JDBC. A oracle implementou uma classe ResultSetOracle e a
Microsoft implementou a classe ResulSetSQL para o seu SQLServer.
A classe da oracle poderia ser implementada da forma a seguir :
public class ResulSetOracle implements ResultSet{
//construtor
public ResulSetOracle(){
...
}
public boolean next( ) throws SeiLaQueOracleException{
//codigo implementando o metodo
}
public String getString(String str ) throws SeiLaQueOracleException{
//codigo implementando o metodo
}
}
A classe da oracle poderia ser implementada da forma a seguir :
public class ResulSetSQL implements ResultSet{
//construtor
public ResulSetSQL(){
...
}
public boolean next( ) throws SeiLaQueSQLException{
//codigo implementando o metodo
}
public String getString(String str ) throws SeiLaQueSQLException{
//codigo implementando o metodo
}
}
Se vc estiver utilizando os drivers da oracle, o m�todo executeQuery
vai retornar uma inst�ncia da classe ResulSetOracle. Se vc estiver
utilizando os drivers da Microsoft para SQLServer o m�todo vai retornar uma
inst�ncia da classe ResulSetSQL. Dessa forma n�o importa qual driver ou qual
banco vc utiliza. Vc estar� sempre utilizando os mesmos m�todos para acessar
o seu banco de dados.
As interfaces devem ser entendidas como um contrato. Ou seja, as
classes que implementam um interface devem ter os m�todos desta interface
implementados.
Atenciosamente,
Jos� Augusto Cerqueira Cond�
Analista de Sistemas - NDS
[EMAIL PROTECTED]
F�ton� Inform�tica e Servi�os
(61) 362-3442 (BRB - Geras)
> ----- Mensagem original -----
> De: Leandro Franchi [SMTP:[EMAIL PROTECTED]]
> Enviada em: ter�a-feira, 23 de abril de 2002 15:27
> Para: Java-List
> Assunto: [java-list] Trabalhando com Interfaces...
>
> Ol� caros amigos do Java-List,
>
> Estamos com uma d�vida muito cruel, simplesmente n�o entendemos como
> podemos utilizar uma interface do mesmo modo que utilizamos a interface
> Resultset... por exemplo:
>
> Resultset rs = db.executeQuery("SELECT * FROM FUNCIONARIOS");
>
> while (rs.next())
> System.out.println(rs.getString("NOME"));
>
> rs.close();
>
> Analisando o c�digo acima, supomos que o rs � um objeto do tipo
> Resultset,
> e que next(), getString() e close() s�o m�todos pertencentes ao objeto
> Resultset criado como rs. Por�m, Resultset � uma interface, e n�o uma
> classe, assim, ela n�o tem corpo dos metodos e sim s� as assinaturas
> deles,
> e ai vem nossa d�vida... como eles executam ??? Onde est�o os corpos dos
> metodos ???
>
>
> Grato
>
> Leandro Franchi
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> historico: http://www.mail-archive.com/java-list%40soujava.org.br
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
O BRB n�o se responsabiliza pelo conteudo da mensagem acima, sendo esta
responsabilidade exclusiva de seu autor. A informa��o transmitida nesta mensagem
destina-se estritamente �(s) pessoa(s) acima referida(s), e cont�m informa��o
confidencial, legalmente protegida, para conhecimento exclusivo do(s) destinat�rio(s).
A leitura, exame, retransmiss�o, divulga��o, distribui��o, c�pia ou outro uso desta
comunica��o, ou ainda a tomada de qualquer a��o baseada nesta informa��o, por pessoas
ou entidades que n�o sejam o(s) destinat�rio(s), constitui obten��o de dados por meio
il�cito e configura ofensa ao Art.5�, inciso XII, da Constitui��o Federal. Caso esta
mensagem tenha sido recebida por engano, por favor inutilize a mesma e, se poss�vel,
avise ao remetente por e-mail.
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------