>>341
コレでも出来る。
場合によってはCのmethodの処理をAB,ACの中に記述したほうが幸せかもしれないけど。
-------------------------------------------
abstract class A {abstract void call(C c);}

class AB extends A {
  void call(C c) {c.method(this);}
}

class AC extends A {
  void call(C c) {c.method(this);}
}
 
class C {
  void method(AB typeAB) {
    System.out.println("method(AB)");
  }
  void method(AC typeAC) {
    System.out.println("method(AC)");
  }
  public static void main(String[] args) {
    A[] arrayA = {new AB(), new AC()};
    C c = new C();
    for (int i = 0; i < arrayA.length; i++) {
      arrayA[i].call(c);
    }
  }
}