Hola que tal.
Por lo que dices que intentas hacer, te recomiendo que hagas un metodo es cada subclase, el cual te devuelva el nombre de tis aves, y en la clase Aves declares un metodo abstracto. para que asi, cuando uses cualquier subclase esta automaticamente se valla a la respectiva. Seria algo asi:
class Ave{
abstract String nombre();
}
class Gallina estends Ave{
public String nombre(){
return "Gallina";
}
}
Haciendolo de esta manera solo usas tu arreglo de tipo Aves, por ejemplo para imprimir harias:
for(int i = 0;i < n; i++)
System.out.println(Ave.nombre);
Donde se mostrara el nombre del tipo de ave que tienes.
Bueno, espero me hallas entendido, y si tienes alguna otra duda puedes preguntar con confianza.
Hasta luego.