Uso de Interface e Herança

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

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

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

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

[quote=tmvolpato]Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?
[/quote]
Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.

[quote=drsmachado][quote=tmvolpato]Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?
[/quote]
Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.[/quote]

Achei estranho
flw

[quote=tmvolpato][quote=drsmachado][quote=tmvolpato]Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?
[/quote]
Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.[/quote]

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

[quote=drsmachado][quote=tmvolpato]Fiquei curioso agora
nesse caso que vc passou
para que vc usaria uma interface na superclass Animal?
[/quote]
Entendo que ele usou este exemplo apenas como forma de demonstrar a dúvida, dificilmente haveria algo assim.[/quote]

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

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

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