Duvida sobre interfaces!

7 respostas
janjan

ola
estava olhando as bibliotecas awt no java
daime depadrei com essa interface

public interface FramePeer extends WindowPeer {
    void setTitle(String title);
    void setMenuBar(MenuBar mb);
    void setResizable(boolean resizeable);
    void setState(int state);
    int  getState();
    void setMaximizedBounds(Rectangle bounds); // XXX
    void setBoundsPrivate(int x, int y, int width, int height);
    Rectangle getBoundsPrivate();
}

como eh interface nao tem corpo nos metodos.
dai
como o getstate vai me retornar algo ou coisa parecida!!!
talvez estao criados em outra classe…
alguem sab dar um explicação bem direta.
ou que sirva pelo menos pra entender!!!
flw

7 Respostas

ralphsilver

Uma interface serve para nada mais nada menos que pra vc fazer uma assinatura entre 2 classes...

no caso... os atributos da classe vão ser no que vc implementar nele... assim.. por causa da interface, vc pode instanciar a interface usando a classe que implementou ela ou até mesmo fazer cast entre 2 classes distintas mas com a mesma interface:

interface:

pessoa

classes:

pessoaJuridica
pessoaFisica

exemplo:

pessoa = new PessoaJuridica();
pessoa = new PessoaFisica();

PessoaJuridica = (PessoaJurisica)pessoa;
janjan

tah. acho qeu intendi.
mas me seria util em que criar um interface?

mario.fts

é util pra definir um comportamento esperado.

vc cria uma interface rolavel, para todos objetos que rolam.

public interface Rolavel{
      void rolar();
}

e vc usa esta interface em todos os objetos que devem ter este comportamento (rolar)

por exemplo:
class Bola implements Rolavel{
      public void rolar(){
          System.out.println("Bola rolando...");
      }
}

class Pneu implements Rolavel{
      public void rolar(){
          System.out.println("Pneu rolando...");
      }
}

Pneus são diferentes de bolas, mas ambos tem um comportamento em comum, que é rolar.

gilmaslima

Complementando o que foi dito pelo mario.fts

Em java não existe herança múltipla então uma classe só pode herdar de uma única classe apenas, mas pode implementar várias outras interfaces.

Exemplo de utilização:

public interface Rolavel{  
      void rolar();  
}
public interface Chutavel{  
      void chutar();  
}
class Bola implements Rolavel, Chutavel{  
      public void rolar(){  
          System.out.println("Bola rolando...");  
      }  
       public void chutar(){  
          System.out.println("Bola sendo chutada...");  
      }  
}  
  
class Pneu implements Rolavel{  
      public void rolar(){  
          System.out.println("Pneu rolando...");  
      }  
}

Usando as classes.

class Teste {
      // o metodo só pode receber a classe que inplementou a interface Chutavel
      public void chuta(Chutavel c){
           c.chutar(); 

      }
      public static void main(String... a) {  
          Bola b = new Bola();
          Pneu p = new Pneu();
          b.rolar(); //chama o metodo implementado
          p.rolar(); //chama o metodo implementado
          
          chuta(b); // Ok b é uma Bola e Bola Implementa Chutavel
          chuta(p); // Erro de compilação só pode ser passado uma classe que implemente Chutavel (direta ou indiretamente)
          
      }
}
ralphsilver

bom tem vários padrões que utilizam interface… eu por exemplo uso o padrão DAO… o interessante de usar interface é a comunicação entre projetos (isso se dividido em camadas)

outra coisa… por exemplo… a pessoa faz a regras de negócios de um projeto, é bem provavel que essa pessoa fará interfaces para ser comunicado com ela…

tem N maneiras de se usar interfaces… eu particularmente te indico a estudar mas sobre interfaces porque ele é uma mão na roda e eu gosto de usar ele…

E

Isso tudo, na terminologia usada pelo pessoal da engenhaia de software equivale a “reduzir o acoplamento”…Dê uma olhada nos termos acoplamento e coesão dentro do contexto de engenharia de software…Se possível, sem seguida, busque discussões a respeito da utilização de interfaces em Java para reduzir o acoplamento…

janjan

show de bola!
flw

Criado 20 de outubro de 2008
Ultima resposta 21 de out. de 2008
Respostas 7
Participantes 5