Dúvida com Interface

10 respostas
humberto-adm

Pessoal estou fazendo um curso de Java Web e em um determinado momento aconteceu o seguinte:

1 - Foi criada uma interface e alguns métodos nela;

2 - Depois foi criada uma classe que implementava esta inteface;

3 - Mais adiante foi criada uma outra classe com referência para a interface criada no passo 1;

4 - No código da classe do passo 3 tinha uma linha assim:

interface = new Classe();

Minha dúvida é a seguinte, um objeto interface pode receber um instância de uma classe que implementou esta mesma interface? Por que? Como funciona isto?

10 Respostas

Tiburcio_Mancha

Então, se aprofunde nos conhecimentos de orientação a objetos. Entenda os conceitos de herança e polimorfismo que vc terá todas as respostas para suas dúvidas.

leorbarbosa

Interfaces extendem interfaces.
Classes implementam interfaces e extendem classes (uma de cada vez.)

O que você escreveu não tem sentido:

interface = new Classe();
doug

Olá

Concordo com o leorbarbosa
Classes implementam interfaces,

Mas uma classe só extends um classe somente.

Na orientação a objetos é possivel extender várias, mas o Java tem uma restrição com esse extends. ok…

A implementação pode ser quantas quiser e for necessário.

Flwsss
ate mais

M

eu acho que o amigo ali quiz dizer algo como isso:

List lista = new Arraylist();

List é uma interface
e
ArrayList uma classe que implementa a inteface List

Isso é totalmente possivél como e funciona exatamente igual o Polimorfismo de classes.

Você diminui a visibilidade dos metodos do ArrayList apenas para os quais estão também citados na Interface List

peczenyj
class MinhaClasse implements MinhaInterface{
 ...
}


class MinhaOutraClasse implements MinhaInterface{
 ...
}

MinhaInterface a = new  MinhaOutraClasse();
MinhaInterface b = new  MinhaClasse();

As variaveis a e b se comportam como MinhaInterface, mesmo sendo classes diferentes. MinhaClasse é uma MinhaInterface.

E digo mais

Object c = new  MinhaClasse();

Tambem funciona pois toda a classe extende Object.

neeryck

http://www.guj.com.br/posts/list/147973.java

Procure nos link’s do usuário ViniGodoy, tem vários que remetem esse assunto e concerteza será útil!
Espero ter ajudado!

[]'s

leorbarbosa
peczenyj:
class MinhaClasse implements MinhaInterface{
 ...
}


class MinhaOutraClasse implements MinhaInterface{
 ...
}

MinhaInterface a = new  MinhaOutraClasse();
MinhaInterface b = new  MinhaClasse();

As variaveis a e b se comportam como MinhaInterface, mesmo sendo classes diferentes. MinhaClasse é uma MinhaInterface.

E digo mais

Object c = new  MinhaClasse();

Tambem funciona pois toda a classe extende Object.

Sim,

mas p/ não confundir o colega, cabe uma observação:
exam objectives 1.6, 5.3 and 5.4 - "interfaces are not part of an object's inheritnace tree"

peczenyj

Bem lembrado.

Bom, todas as duvidas aqui podem ser resumidas a

Se isso é possivel

MinhaClasse X = new MinhaClasse(); Interface Y = (Interface) X; // fazendo o cast

então podemos simplificar

Interface Y= new MinhaClasse();
humberto-adm

É exatamente isto que aconteceu no curso e com o seu comentário agora eu compreendi.
Então quer dizer que a interface List vai me oferecer os métodos que são incomuns para List e ArrayList?
Foi isso que entendi quando se instância um objeto interface com um construtor de uma classe que implementa a interface em questão.

Mustang89:
eu acho que o amigo ali quiz dizer algo como isso:

List lista = new Arraylist();

List é uma interface
e
ArrayList uma classe que implementa a inteface List

Isso é totalmente possivél como e funciona exatamente igual o Polimorfismo de classes.

Você diminui a visibilidade dos metodos do ArrayList apenas para os quais estão também citados na Interface List

peczenyj

Esse é o barato das Interfaces, te ajudam a ter um comportamento polimorfico sem side-effects tipo “diamante da morte” que a herança multipla traz.

Criado 3 de junho de 2010
Ultima resposta 4 de jun. de 2010
Respostas 10
Participantes 7