Sono sempre io... non avendo fondamenti di OOP trovo una certa difficoltà nel calarmi nella mentalità di questo tipo di programmazione: pur intuendone la potenza per il momento la sto imparando passivamente e ciò non mi piace, oltre a non essermi di nessun aiuto!
Per esempio qualcuno sa spiegarmi con un esempio concreto quando verrà il momento che apprezzerò il dispatch dinamico dei metodi? A cosa serve una cosa del genere, tipo quella riportata qui sotto?

class GreenBox {
void callme() {
System.out.println("Inside Green Box");
}
}

class RedBox extends GreenBox {
void callme() {
System.out.println("Inside Red Box");
}
}

class Dispatch {
public static void main(String args[]) {
GreenBox x = new RedBox();
x.callme();
}
}

C:\java_source>java Dispatch
Inside Red Box

Istanzio una variabile di un tipo e poi la riferisco ad un altro, perchè? Avrei ottenuto lo stesso risultato con:

class Dispatch {
public static void main(String args[]) {
RedBox x = new RedBox();
x.callme();
}
}

ed allora mi sorge spontaneo non capire l'utilità di tutto ciò pur sapendo che a qualcosa serve!

Abbiate pazienza.....