i metodi getA() sono public.

comunque stiamo facendo test in ufficio a questo proposito:

ci siamo resi conto che compilando classi java con la jdk 1.4.2 non possiamo fare questa operazione, mentre invece usando la 1.5.0 il metodo me lo vede come overridden.

le cose a questo punto sono 2:

o la 1.5.0 ha cambiato il metodo di pensare a livello logico dell'overriding e dell'overloading, oppure c'è un bug nella j2se 1.5.0.

Dato che questi due concetti sono due pilastri della programmazione ad oggetti, io opterei più per la seconda scelta.
Ho cercato sul sito della sun questo bug, senza alcun riscontro.
Quindi ho scritto alla sun e ho chiesto di verificare.

Tre settimane almeno... intanto ho provato a compilare e a lanciare da riga di comando l'applicazione e si comporta allo stesso modo di eclipse...

comunque se vuoi fare un test eccoti il codice:

prima compilalo e lancialo in j2se 1.4.2 e poi in j2se 1.5.0

vedrai da solo:

package pippo;

public class A
{
private String as;

public A() {}:

public String getAs() { return(as); }
}

public class X
{
private A a;

public X() {}

public A getA() { return(a); }
}

public class B extends A
{
private String bs;

public B() {}

public String getBs() { return(bs); }
}

public class Y extends X
{
private B b;

public Y() {}

public B getA() { return(b); }
}


per sicurezza ti mando anche la mia java -version della 1.5.0:

java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)