Duvida Interface

Ola!
Estou comecando a estudar interfaces.
Li um artigo aqui do site e to c/ uma duvida.
Todos exemplos que vejop sao mais ou menos como este:

public interface Paciente { public String getNome(); public Historico getHistoricoMedico(); public Ficha getInformacoesCadastrais(); // etc. }

Soh com metosod getisso ou getaquilo. Eh soh este tipo de metodo q dah para colocar em uma interface?
Alguem poderia colocar um outro exemplo?

Obrigado.
Aurelio. :shock:

Voce pode declarar qualquer metodo numa interface - claro, com excecao a metodos private e abstract, o que, com certeza, nao faz o menor sentido existir :wink:

Que tal o método addActionListener ?
Ele vem de uma interface correto ?

A interface tem o método addActionListener, ela provavelmente estende a superclasse que tem o addActionListener como método.
Assim, você implementa a interface e tem acesso ao método. Fui claro ?

ps. se eu estiver errado alguém diga :slight_smile:

Valeu pessoal.
Voces sao 10!!!

Forte abraco a todos.
Aurelio :wink:

Pessoal, mais uma coisa:
Li em um artigo o seguinte:

Uma interface não pode implementar nenhum método, enquanto uma classe abstrata em geral possui alguns métodos concretos e outros abstratos

Segundo voces me falaram eu posso colocar qualquer metodo, certo.
Mas como eh que este artigo que cito e mais um outro de um livro diz que nao posso implementar metodos?

Serah que estou confundindo IMPLEMENTAR com COLOCAR(DESCREVER)?

Sou novo na tecnologia, sendo assim eu gostaria de esclarecer esta minha confusao.

[]´s
Aurelio

Sim, vc está confundindo - declarar um método (em uma interface ou em uma classe abstrata) é uma coisa, e implementar um método (o que geralmente traz junto a declaração dele) é outra.

Em Java, você pode declarar métodos dento de interfaces ou classes, mas pode implementar métodos apenas dentro de classes.

Cappicci?

Mais leitura:

http://fishbowl.pastiche.org/archives/001199.html#001199

bom aurelio, vou tentar ser bem claro.

em uma interface voce pode apenas declar os métodos (como o cv disse, declarar é diferente de implementar), enquanto em uma classe abstrata você pode tanta declarar um método abstrato como implementar um método não abstrato.

Ae vc me pergunta. -Porque usar Interface?
primeira resposta e a mais óbvia
-Para organizar seu sistema, pois quando vc ver uma classe implementando uma interface X, vc sabe que nessa sua classe terá os métoso da interface.
Vc pensa e pergunta denovo. - Mas só serve pra isso?
aqui que muita gente ainda confunde(eu mesmo demorei muito tempo pra entender, até que veio o tutorial do guj de interfaces e fez eu rever meus conceitos, hehhe)

Uma grande, na minha opinião a principal, função da interface é o lance de reaproveitamento de códigos. mas como?
vou tentar por codigos de exemplo.
Suponho que vc tem um método que recebe o parametro uma classe e dentro desse método vc vai mostrar a idade do individuo, assim por exemplo

public void getIdade(Pessoas p) {
  System.out.println(p.idade);
}

nesse exemplo (bem banal por sinal), vc tem um método que recebe como parametro uma classe Pessoas, até aqui simples certo?
Agora vamos supor que vc tenha uma classe chamada Gato e vc quer pegar a idade do gato, vc teria que construir outro método e passar o parametro como por exemplo public void getIdade(Gato g)
aqui é um exemplo onde poderiamos reaproveitar o método com o conceito de interface. Supondo que a classe Pessoas e a classe Gato implemente uma interface qualquer (vou chamar de Caracteristicas), vc pode passar a interface apenas para 1 unico método, ou seja, reaproveitando código. Ex

public void getIdade(Caracteristicas c) {
  System.out.println(c.idade);
}

método agora com a interface como parametro

public class Pessoas implements Caracteristicas {...}

public class Gato implements Caracteristicas {..}

aqui supondo que minhas duas classes implements Caracteristicas
com isso eu posso passar minha classe para o método que nao tera problemas.

acho que fui claro

qualquer coisa é só dar um toque
esse lance de interface confude muita gente mesmo

falow

1 curtida

:idea: TÁ! AGORA SIM!!! CAIU A FICHA…UFA!!! :idea:

Agora sim, eu peguei “qualé das interface”

Muito obrigado.

Ae…ainda vou fazer muita pergunta de nivel iniciante, porem tenham a certeza de que estou ralando e nao vou ficar pedindo coisa pronta ok? Veio buscar isto que voces deram e que nao se encontra em livros, ou seja, explicacao basica, pode ateh mesmo ser banal como falou o ManchesteR, mas eh isto q o iniciante precisa.

Olha soh meu caso: Sai do bom e velho COBOL(mais de 12 anos), passei um pouco pelo PHP. Agora estou trabalhando com JAVA e mais adiante me espera o JSEE. Que virada meu…mas vou conseguir eh soh voces continuarem me aturando por aqui :wink:

[]´s
Aurelio

Pontencia nao eh nada sem controle.
Por esta razao tomo Gardenal diariamente - Agora em comprimidos de 33g :shock:

[quote]Ae vc me pergunta. -Porque usar Interface?
primeira resposta e a mais óbvia
-Para organizar seu sistema, pois quando vc ver uma classe implementando uma interface X, vc sabe que nessa sua classe terá os métoso da interface.[/quote]

Nuossa! : )
Não não… o principal objetivo de interface não é, de forma alguma, organizar o sistema!!!

Também não!!

[quote] public void getIdade(Pessoas p) { System.out.println(p.idade); }
nesse exemplo (bem banal por sinal), vc tem um método que recebe como parametro uma classe Pessoas, até aqui simples certo?[/quote]

Uai! Para esse exemplo, pq nao resolver isso com Herança e Polimorfismo de maneira simples e, em minha opiniao, muito mais claro? Sim sim sim!!!

Interfaces e Classes abstratas são usadas em diferentes fases… É preciso entender isso!

O objetivo de uma Interface é totalmente outra, e está relacionada a uma etapa anterior a da implementação, normalmente durante a fase de projeto, onde não estamos preocupados com a implementação, mas sim com as INTERFACES dos objetos, isto é, com o relacionamento/comunicacao entre os objetos q compoe o seu sistema… Diferente de uma classe abstrata, onde ela sim deve ser usada para organizar a estrutura de classes do sistema (hierarquicamente) para fazer melhor uso de herança e polimorfismo, sendo portanto usado na fase de implementação do código.

Com o uso de Interface conseguimos separar as ‘interfaces dos objetos’ de sua implementação (a classe q implementa determinada Interface).

Postei uma msg aqui falando um pouco mais sobre isso… se quiserem ler:
http://www.guj.com.br/forum/viewtopic.php?t=5038

Gerson K.

1 curtida

Da para vc colocar qualquer tipo de metodo, portanto que vc os subscreva na classe que vc implementar.