Dúvida com Interface

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?

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.

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

O que você escreveu não tem sentido:

interface = new Classe(); 

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

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

[code]class MinhaClasse implements MinhaInterface{

}

class MinhaOutraClasse implements MinhaInterface{

}

MinhaInterface a = new MinhaOutraClasse();
MinhaInterface b = new MinhaClasse();[/code]

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.

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

[quote=peczenyj][code]class MinhaClasse implements MinhaInterface{

}

class MinhaOutraClasse implements MinhaInterface{

}

MinhaInterface a = new MinhaOutraClasse();
MinhaInterface b = new MinhaClasse();[/code]

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.
[/quote]

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”

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();

É 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.

[quote=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[/quote]

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.