[RESOLVIDO]Como funciona um método que retorna interface?

[quote=ganondorfan]Acho que o que ta te impedindo de entender pode ter haver com isto:


Cachorro dog = new Cachorro();

Antes do sinal de igual (Cachorro dog) nos temos uma declaração, alí ainda não tem nenhum objeto concreto, você só está informando um nome de um ponteiro, ou seja, analogamente vamos dizer que você criou um “controle remoto” que tem capacidade de controlar objetos concretos do tipo Cachorro. ( controle remoto de cachorro)

Do lado direito do sinal de igual é onde realmente está sendo construido algo de concreto (new Cachorro()), o objeto Cachorro é criado junto do operador new, tenha em mente que é neste pedaço que o verdadeiro objeto nasce.

Neste ponto, nos temos duas coisas separadas, temos um controle remoto que tem a capacidade de controlar Cachorro, e temos um objeto Cachorro criado segundo nossa requisição (new Cachorro), a atribuição(sinal de igual) faz com que o controle remoto(dog) aponte para o objeto cachorro, ou seja, dog não é o cachorro, ele é um ponteiro(“controle remoto”) que tem a capacidade de controlar o cachorro.

Agora a parte polimorfica

Digamos que Cachorro implemente a interface Animal

public class Cachorro implements Animal{

E esta interface(Animal) tem o metodo correr();

Tendo isto em mente eu faço a seguinte decaração:

Animal dog = new Cachorro();

Como pode isso sendo que Animal é uma interface???

Como no exemplo anterior, dog é só um controle remoto que controla Animal, ou seja, ele pode receber um Cachorro, pois o cachorro implementa(é do tipo) Animal(o cachorro tem o método correr() obrigatoriamente).

A parte interessante, é que se Cachorro tiver outros metodos como Latir(), que a interface Animal não possui, este controle remoto(dog) não terá acesso a estas peculiaridades, pois você criou um controle remoto que tem botoes so para controlar metodos de Animal e nao de um cachorro em especifico, no caso do exemplo, o cachorro so ia conseguir correr() e não latir(). A não ser que você executasse uma conversao de tipo (Cast), mas isto é outra historia.

Acho que essa explicação é o máximo que consigo rs

De qualquer forma, espero ter te ajudado.

[/quote]

vlw mesmo assim, mais essa parte que vc explicou eu jah tinha entendido tudo, só não tava entendendo o que foi citado nas resposta acima, mas agora entendi tudo!!!

Obrigado pela atenção!!!