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.
leorbarbosa
Interfaces extendem interfaces.
Classes implementam interfaces e extendem classes (uma de cada vez.)
O que você escreveu não tem sentido:
interface=newClasse();
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
Mustang89
eu acho que o amigo ali quiz dizer algo como isso:
Listlista=newArraylist();
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
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
InterfaceY=newMinhaClasse();
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:
Listlista=newArraylist();
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.