OO - Interfaces

4 respostas
T

Pessoal, estou com dúvidas relacionadas a interface, se pudessem me ajudar…

Estou lendo atualmente o livro “Use a cabeça - JAVA” e entendi até agora sobre interfaces:

  • É uma classe abstrata com métodos públicos e abstratos;
  • Serve como um contrato, já que as classes que a implementarem precisam NECESSARIAMENTE implementar os seus métodos;

Porém, fiquei muito confuso com a relação entre interface/polimorfismo. Qual a vantagem, por exemplo, em eu mandar implementar a interface Runnable em alguma classe minha?
Não consegui compreender esta parte.

Valeu!

4 Respostas

Rodrigo_Sasaki

Veja esse post do blog do FernandoFranzini

Guike

Thiago, a interface é usado muito para polimorfismo e pode ser muito confundida com heranças.

Vou tentar dar um exemplo que foi usado para o meu intendimento, num apostila usada pela caelum.

Vamos supor que tenhamos um sistema onde existe um Classe mãe Funcionário e outras duas Gerente e Diretor

Onde Gerente e Diretor “HERDÃO” funções e atributos de Funcionario, porem mais para frente precisamos acessar alguma área de nosso sistema onde necessitamos fazer a verificação dessas classes, suponhamos então que surja uma Classe Cliente, que necessita fazer verificação em nosso sistema, mas um Cliente é um Funcionário?

NÃOOOOO

nesse ponto é que entra a diferença de interface

a Classe Cliente e Funcionario assinam(implementam) um método de verificação, exemplo uma interface Verificação

sendo assim quando Funcionario implementasse Verificação todas as suas filhas implementariam também assim como Cliente e então Cliente consegue fazer a verificação e nosso sistema sem necessariamente herdar métodos e atributos desnecessários que só Funcionarios deveriam ter, lembrando que podemos IMPLEMENTAR quantas classe quiser-mos diferende de Herdar, que podemos herdar de uma só

no caso usariamos a interface Verificação como polimorfismo em um método de verificação, sendo assiim todas as classes que implementam o método de verificação passaria polimoficamente pelo sistema.

Espero que tenha ajudado

S
thiago189:
Pessoal, estou com dúvidas relacionadas a interface, se pudessem me ajudar...

Estou lendo atualmente o livro "Use a cabeça - JAVA" e entendi até agora sobre interfaces:

- É uma classe abstrata com métodos públicos e abstratos;
- Serve como um contrato, já que as classes que a implementarem precisam NECESSARIAMENTE implementar os seus métodos;

Porém, fiquei muito confuso com a relação entre interface/polimorfismo. Qual a vantagem, por exemplo, em eu mandar implementar a interface Runnable em alguma classe minha?
Não consegui compreender esta parte.

Valeu!

É simples.

Imagine isso:

public class Main {
	
	public static void main(String[] args) {
		MinhaClasse classe = new MinhaClasse();
		Thread thread = new Thread(classe);
	}

}

class MinhaClasse {
	
	void metodo() {
		
	}
	
}

Como que o construtor de Thread vai saber que MinhaClasse terá um metodo chamado run()? Não tem como ele garantir isso. Se ele implementar a interface Runnable ele terá certeza que MinhaClasse terá um metodo chamado run().

Acho que outro bom exemplo é ver como o Java faz com List, Set, etc...

E leia o link que digaoneves passou. Muito interessante.

T

Boa tarde.

Eu também estou lendo esse livro e vou te dar uma dica que tem funcionado comigo.

Na verdade não se trata de você estar fazendo confusão.

O problema que ocorre agora com você, também ocorre comigo tipo quando a gente pega um tema novo
acaba se confundindo.

A solução não é procurar respostas ou pontos de vistas.

Você tem que ler o livro tipo 1 capítulo de cada vez.
Quando chegar no final do capítulo tu faz uma análise e veja se conseguiu entender.
Mas cuidado, pois entender não é ser especialista no assunto.
Entenda a ideia que o tema está tentando te passar.

Por exemplo eu entendi que no polimorfismo faz com que o objeto mude o seu estado de comportamento
dependendo da forma como você utilizar ou executar ele.
Já para Interfaces eu entendi que é muito usada para quando temos muitas classes herdando de outras ou extends de outras
aí na verdade fica perigoso usarmos um método geral na superclasse para todos eles pois pode ocorrer de eles
terem comportamentos errados de acordo com o que queremos ou então pode ocorrer deles usarem o mesmo método
com é mostrado na parte do lasango mortal… e tals

Minha dica… leia com atenção os capítulos e entenda cada coisa de cada vez…
Se for preciso então desenhe para facilitar ou faça um mapa mental (se não souber procure no google o que é mapa mental)

eu estou fazendo assim está dando certo…

Agora uma outra dica… não adianta querer entender tudo do livro Java Use a Cabeça já assim no início…
tipo eu já aprendi muito sobre métodos, classes, herança, encapsulamento, polimorfismo e um monte de outras coisas que u não sabia

no entanto eu aprendi uma ideia/conceito inicial do tema…

assim quando eu preciso ou tenho dúvida eu vou já no lugar certinho que tem o assunto…

mas no geral eu vou ter que ler alguns capítulos tipo umas duas ou três vezes para que assim o cérebro possa evoluir…

Algumas coisas em Java eu já perguntei para um monte de gente e mesmo com muitas e ótimas explicações não consegui
entender, mas isso não foi culpa do pessoal, somente era necessário eu ler um pouco mais para que o cérebro assimilasse.

Bom deixo aqui minha dica mas não é a opinião única…
Citei aqui umas coisas que tem dado certo comigo mas como o próprio livro fala nos primeiros capítulos, cada pessoa
tem um método de aprender…
Sendo assim minha dica não considero como a única dica possível para o teu caso…
Não desanime e continue estudando pois é normal ter confusão… releia rreleia e releia
faça os exercícios e tudo mais…
vc vai conseguir…

Abraço a todos.

Criado 31 de agosto de 2012
Ultima resposta 1 de set. de 2012
Respostas 4
Participantes 5