Uso de Interface e Herança

8 respostas
leosgoncalves

Pessoal, boa tarde.

Sou novo em java e estou com dúvidas na parte do uso de interface.

Veja se a seguinte situação é possível:

1 - Classe animal, tendo 2 subclasses, canino e felino (página 188 do livro use a cabeça java)

public class animal (){…}

public class canine () extends animal {…}

public class feline () extends animal {…}

DUVIDA: A classe Animal pode implementar alguma interface? Se sim o que acontece com as subclasses? Não consegui montar ambiente de teste para isso!

public class animal () implements INTERFACE A{…}

Desde já Obrigado

8 Respostas

Rodrigo_Sasaki

Se a classe pai implementa a interface, as subclasses também cumprem com o contrato.

drsmachado

Vamos supor que a classe Animal tenha que implementar a interface Instinto

public interface Instinto{
    public void sobreviver();
}

A classe Animal, sendo concreta e implementando a interface Instinto, precisa, obrigatoriamente, implementar cada um dos métodos existentes nesta interfac.

public class Animal implements Instinto{
    @Override
    public void sobreviver(){
        //TODO implemente como cada animal sobrevive
        System.out.println("É preciso definir qual animal, para saber como ele sobrevive");
    }
    //demais métodos inerentes a um animal
}

As subclasses poderão optar por sobrescrever ou não os métodos da superclasse, salvo se, esta for abstract e tiver métodos, próprios ou de uma interface que está sendo implementada por ela, que não foram implementados.
Neste caso, poderíamos apenas ter

public class Felino extends Animal{}
//e
public class Canino extends Animal{}

Assim como, pode-se fazer

public class Felino extends Animal{
    @Override
    public void sobreviver(){
        setAlerta(true);
        while(comFome){
            comFome = cacar();
        }
        if(noCio){
             Felino parceiroA = procurarParceiroA();
             reproduzirSe(parceiroA);
        }
    }
}
tmvolpato

Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?

drsmachado

tmvolpato:
Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?

Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.

tmvolpato

drsmachado:
tmvolpato:
Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?

Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.

Achei estranho
flw

drsmachado

tmvolpato:
drsmachado:
tmvolpato:
Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?

Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.

Achei estranho
flw


Com certeza é estranho, afinal, podemos interpretar que tais classes, Animal, Felino e Canino são POJOs…
Mas eu entendo que ele está tentando assimilar estes conceitos, por isso, ainda não consegue entender que interfaces são usadas em outros contextos.

sergiotaborda

drsmachado:
tmvolpato:
Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?

Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.

não dificilmente. Na prática é comum fazer a super classe implement Serializable ou Iterable, por exemplo.

F

leosgoncalves:
Pessoal, boa tarde.

Sou novo em java e estou com dúvidas na parte do uso de interface.

Veja se a seguinte situação é possível:

1 - Classe animal, tendo 2 subclasses, canino e felino (página 188 do livro use a cabeça java)

public class animal (){…}

public class canine () extends animal {…}

public class feline () extends animal {…}

DUVIDA: A classe Animal pode implementar alguma interface? Se sim o que acontece com as subclasses? Não consegui montar ambiente de teste para isso!

public class animal () implements INTERFACE A{…}

Desde já Obrigado

Pode sim, lembrando que a classe animal tem que implementar os métodos, e as classes filhas, recebem esses métodos ( se n for private ).

Criado 31 de janeiro de 2013
Ultima resposta 31 de jan. de 2013
Respostas 8
Participantes 6