Salve,
in questo esercizio mi si dice che l'errore e a riga 13 perchè non si può fare il cast a B di un oggetto di tipo A ma secondo me è già errore a riga 12 perchè aArray referenzia un oggetto array d tipo B e io assegno a aArray[0] un oggetto di tipo A. Che ne dite?

codice:
public class A {
   public void f() {
      System.out.println("f di A");
   }
}

public class B extends A {
   public void f() {
      System.out.println("f di B");
   }
   public void g() {
      System.out.println("g di B");
   }
}
e il seguente main program (nello stesso package di A e B):

codice:
public class es5 {
   public static void main(String[] args) {
      B[] bArray = new B[1];
      bArray[0] = new B();

      A[] aArray = new A[1];
      aArray[0] = new A();

      aArray = bArray;
      ((A)aArray[0]).f();

      aArray[0] = new A();   // Riga 12
      ((B)aArray[0]).f();    // Riga 13
   }
}