Polimorfismo - Interfaces [Resolvido]

3 respostas
R

Prezados Amigos,

Sou iniciante em Java e estou aprendendo polimorfismo através do livro “Use a Cabeça Java”. Estou estudando o capitulo 8 - “Interfaces e Classes Abstratas”, nesse capitulo dá a entender que a classe pode estender diretamente e indiretamente uma classe. Bom, a minha dúvida é saber se o mesmo pode acontecer com uma Interface, se ela pode ser implementada indiretamente por uma classe.

No final do capitulo tem um exercício que confundiu um pouco minha cabeça, ele é mais ou menos assim:

interface Utilidades
{
   int ligar();
}
public abstract class Eletrodomestico implements Utilidades
{
   int ligar() return 0;
}
public class TV extends Eletrodomestico()
{
   int ligar() return 1;
}

public class Radio extends Eletrodomestico()
{
}

class TesteUtilidades
{
  public static void main (String [] args)
  {
    Utilidades [] i = new Utilidades[2];
    i[0] = new Radio(); // pq isso funciona? como o polimorfismo se aplica nisso?
    i[1] = new TV(); // pq isso funciona? como o polimorfismo se aplica nisso?
    i[0].ligar();
    i[1].ligar();
  }
}

Por favor, me ajudem a entender essa parte. Se tiver dicas de materias falando mais do assunto e se aprofundando, deixe o link para eu consultar.

3 Respostas

rmendes08

Boa tarde rafaeldso,

seu raciocínio está correto. Da mesma maneira que uma classe pode herdar outra indiretamente, o mesmo vale para interfaces. Por exemplo:

interface Voador{
   void voar();
}

class Passaro implements Voador{
}

class Pardal extends Passaro{
}

class Teste{
    void teste(){
        Pardal p = new Pardal();
        p.voar(); //p consegue voar() pois implementa voador indiretamente
        
        Voador v = p;
    }
}

Ou seja, se uma classe implementa uma interface, todas as suas subclasses também a implementarão indiretamente. Não importa a profundidade da hierarquia de classes.

R

Obrigado rmendes08 pela resposta.

AndreAlcantara

Lembrando que interfacess podem herdar outras interfaces.
Exemplo no Java:
List que herda Collection
https://docs.oracle.com/javase/8/docs/api/java/util/List.html

Criado 1 de fevereiro de 2015
Ultima resposta 21 de mar. de 2016
Respostas 3
Participantes 3