Ogni elemento di un Array di oggetti deve essere allocato direttamente, quindi ciclo e "new".
il new listaX[n] non fai altro che dire di conservare n posizioni in memoria per contenere i tuoi oggetti.
Ok quindi è esatta la seguente istruzione?
codice:
//costruttore
public B(int n){
listaY=new listaX[n];
for (int i=0; i<n; i++)
listaY[i]=new A();
}