Uma classe *implementa* servicos.

    Uma interface *especifica* servicos.

    Ambos mecanismos suportam o polimorfismo (atraves da heranca de
implementacao e da implementacao de interface, respectivamente). Por
exemplo:

    // a classe X

    class X { ... }

    // o protocolo de servicos K

    interface K {...}

    // Y e' uma especie de X, e e' capaz de prestar
    // os servicos especificados em K

    class Y extends X implements K { ... }

    Um objeto da classe Y pode ser usado em qualquer lugar em que se
espere um objeto da classe X ou um objeto de uma classe que implemente
a interface K.

    O mecanismo de heranca possibilita que uma classe herde os
atributos e metodos de sua ancestral, e esse e' o seu objetivo
principal: a reusabilidade. O polimorfismo tambem e' conseguido, mas
nao deve ser o unico interesse aqui.

    O mecanismo de implementacao de interfaces e' mais adequado que a
heranca quando queremos apenas o polimorfismo (nao se quer reutilizar
atributos nem implementacoes de metodos). A linguagem C++ fornece esta
capacidade com as classes abstratas puras. Java fornece um conceito
similar com um nome especifico: interfaces.

    Por exemplo, pense no caso da interface java.lang.Comparable. Um
objeto e' comparavel se ele implementa Comparable (que possui um unico
metodo: "int compareTo(Object)"). A sua classe real nao interessa
aqui. Porque usariamos heranca de implementacao, se a unica coisa que
queremos e' poder aplicar um metodo especifico (a comparacao)?

    Essa separacao entre especificacao e implementacao e' de suma
importancia. Quem conhece tecnologias de objetos distribuidos e
componentes  deve concordar. Sem falar que o grande sucesso da Sun em
estabelecer especificacoes padronizadas (nao implementacoes) para as
APIs Java baseia-se fundamentalmente nas interfaces.

    Nao sei se ajudei, mas...

        Rafael Chaves
        Perfil Tecnologia


-----Mensagem original-----
De: paulo henrique castro <[EMAIL PROTECTED]>
Para: Kleber Bueno <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Data: Sexta-feira, 6 de Abril de 2001 16:33
Assunto: Re: RES: [java-list] duvida iniciante - interface


>Hi!
>
>
>>Pense assim :
>>Interface Dirigir
>>Ela tem os metodos TrocaMarcha(),Acelera(),Freia()
>>
>>Ai voce cria uma classe Carro que implementa Dirigir
>>Nela voce vai ter os metodos TrocaMarcha(),Acelera(),Freia()
>>
>>Ai vamos dizer que voce tambem cria a classe Moto
>>Voce poderia usar os mesmos metodos.
>
>
>         essa parte ja tinha entendido.. porem, continuo nao vendo
utilidade
>alguma!! Por que nao apenas declarar esses metodos em minhas classes
Carro
>e Moto, ao inves de ter que colocar implements Dirigir nas duas??????
>         Serei obrigado a declarar todos os metodos da mesma forma!!
>
>
>>Depois disso voce cria uma outra classe que se chama
MeiodeTransporte
>>
>>O construtor dela recebe um parametro do tipo Dirigir
>>Ficaria assim
>>
>>public MeiodeTransporte(Dirigir g)
>>{
>>         g.Acelera();
>>         g.Freia();
>>}
>
>
>         De acordo com os livros que estou lendo voce nao pode
instanciar
>uma interface, ou seja nao posso ter um objeto 'g' do tipo Dirigir,
pois
>dirigir e' uma interface e nao uma classe.
>
>         Tenho certeza de que se nao fosse uma coisa importante a Sun
nao
>teria "inventado" as interfaces em Java.. so' nao consigo ver um
exemplo
>pratico para aplicacao de tal funcionalidade!!
>
>         []s!
>
>         PH
>
>
>___________________________________________________
>Paulo Henrique L. de Castro       [EMAIL PROTECTED]
>
>Radio Antena 1    http://www.antena1.com.br
>
>
>------------------------------ 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
>para sair da lista: envie email para
[EMAIL PROTECTED]
>---------------------------------------------------------------------
----
>




------------------------------ 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
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a