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.