Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mamifero mamifero = new Cachorro();

Olá, estou gostando muito das aulas parabéns. Os professores são feras!

Estou com um dúvida sobre a generalização. Aprendemos que podemos criar uma variável de referência mais genérico, ao invés de uma variável mais específica, como no exemplo abaixo:

Primeira Forma:

Cavalo cavalo = new Cavalo();
Burro burro = new Burro();
Zebra zebra = new Zebra();

Segunda Forma:

Equino cavalo = new Cavalo();
Equino burro = new Burro();
Equino zebra = new Zebra();

Exemplo da Classe Equino e Cavalo

public abstract class Equino(){

    private String crina;

    public void setCrina(String crina){
        this.crina = crina;
    }

    public String getCrina(){
        return this.crina;
    }

    public void relinchar(){
        System.out.println("iríiiiii");
    }

    public abstract void cavalgar();

}

== * == * == * == * == * == * == * == * == * == * == * == *

public class Cavalo extends Equino{

        private boolean hipismo;

        public void setHipismo(boolean hipismo){
            this.hipismo = hipismo;
        }

        public boolean getHipismo(){
            return this.hipismo;
        }

        @Override
        public void cavalgar(){
            System.out.println("Cavalo cavalga.");
        }
}

Sabendo que o cavalo, o burro e a zebra são classes filhas do Equino. Mas a pergunta é, qual a vantagem do segundo exemplo em relação ao primeiro. Alguém pode dar um exemplo em cima dessas classe simples.

Muito obrigado.

1 resposta
solução!

Reutilização de código, afinal você está definindo que o cavalo é um equino, assim você poderá utilizar códigos que foram utilizados em equino para facilitar os dados em cavalo, por exemplo quantidade de dentes para ser considerado um equino você poderia utilizar um bolleano para apresentar a saída true or false., ou quantidade de patas. Lembrando que é necessário get e sets em equino e a função booleana em equino

exemplo: ` `public void setPata(int pata) { this.pata = pata; }

public int getPata() {
    return this.pata;
}

public boolean cavalo() {
    if(pata == 4) {
        System.out.println("eh equino");

    }else {
        System.out.println("não eh equino"); 
    }
    return false;

ublic class testecavalo {

public static void main(String[] args) {
    Cavalo cavalo = new Cavalo() ;
    cavalo.setPata(4);
    System.out.println(cavalo.getPata());
    System.out.println(cavalo.cavalo());
}