Interfaces servem para utilizar-se do conceito de multipla herança em Java, ok.
Interfaces, possuem características de ação, normalmente terminadas em: ‘avel’, ‘ivel’…
Ai penso, e lembro da sobescrita e sobrecarga… e penso: Realmente há necessidade de utilizar interfaces? Claro que deve haver, mas eu não consegui compreender sozinho ainda, alguém poderia me dar uma luz?
Vou te dar um exemplo tosco de uso de interface. Mas dá pra entender a idéia.
Vc tem um JTextField e um JCheckBox. Os dois tem funções e utilizações distintas, mas vc quer que ambos tenham um método chamado “getCampo” (o motivo não importa).
Vc pode criar um interface com este método e criar novos objetos JTextField e JCheckBox implementando esta interface. Digamos que o nome desta interface seja InterfaceCampo. Veja o código:
InterfaceCampo a = jtfNome;
InterfaceCampo b = jcbAtivo;
System.out.println(a.getCampo());
System.out.println(b.getCampo());
Logo, através de uma interface podemos criar um comportamento padrão para objetos de tipos diferentes. Daí o nome “múltipla herança”.
[quote=marciosantri]Vou te dar um exemplo tosco de uso de interface. Mas dá pra entender a idéia.
Vc tem um JTextField e um JCheckBox. Os dois tem funções e utilizações distintas, mas vc quer que ambos tenham um método chamado “getCampo” (o motivo não importa).
Vc pode criar um interface com este método e criar novos objetos JTextField e JCheckBox implementando esta interface. Digamos que o nome desta interface seja InterfaceCampo. Veja o código:
InterfaceCampo a = jtfNome;
InterfaceCampo b = jcbAtivo;
System.out.println(a.getCampo());
System.out.println(b.getCampo());
Logo, através de uma interface podemos criar um comportamento padrão para objetos de tipos diferentes. Daí o nome “múltipla herança”.
Fui claro ou te confundi ainda mais?[/quote]
pelo que eu entendi no seu exemplo, serve apenas para obrigar uma classe a conter aqueles métodos ? pq senão, neste caso, poderiam apenas ter métodos distintos de getCampo… privates msm, certo ?
[quote=MrDataFlex][quote=marciosantri]Vou te dar um exemplo tosco de uso de interface. Mas dá pra entender a idéia.
Vc tem um JTextField e um JCheckBox. Os dois tem funções e utilizações distintas, mas vc quer que ambos tenham um método chamado “getCampo” (o motivo não importa).
Vc pode criar um interface com este método e criar novos objetos JTextField e JCheckBox implementando esta interface. Digamos que o nome desta interface seja InterfaceCampo. Veja o código:
InterfaceCampo a = jtfNome;
InterfaceCampo b = jcbAtivo;
System.out.println(a.getCampo());
System.out.println(b.getCampo());
Logo, através de uma interface podemos criar um comportamento padrão para objetos de tipos diferentes. Daí o nome “múltipla herança”.
Fui claro ou te confundi ainda mais?[/quote]
pelo que eu entendi no seu exemplo, serve apenas para obrigar uma classe a conter aqueles métodos ? pq senão, neste caso, poderiam apenas ter métodos distintos de getCampo… privates msm, certo ?
[/quote]
Mas se vc criar métodos distintos não poderá ter uma variável de referência de um tipo só acessando vários tipos de objetos. No meu exemplo vc sabe quais são os objetos. Agora veja este:
[code]{
…
InterfaceCampo a = jtfNome;
InterfaceCampo b = jcbAtivo;
imprimirCampo(a);
imprimirCampo(b);
…
}
public void imprimirCampo(InterfaceCampo x){
System.out.println(x.getCampo());
}[/code]
Temos um método para imprimir o nome do campo. Se vc simplesmente criasse métodos privados nas classe não teria como fazer isto de maneira simples. Mesmo se o seu método fosse público, vc teria que fazer vários ifs para testar o tipo de objeto e se houvesse um novo tipo de objeto que implementasse o método getCampo teria que sair varrendo o sistema para corrigir seus ifs. A interface simplifica este processo além de garantir que as classes que a implementam terão os métodos de sua definição. É meio que “herança”, só que não é direta. É uma saída para um objeto “herdar” de mais de uma classe.