Già incomincio a vederci più chiaro.

Quindi se ho capito bene un abstract è una classe generica che ha dei metodi comuni a tutte le classi più specifiche che però implementeranno questi metodi a seconda del caso.

public abstract class Poligono{
abstract int calcolaArea();
}

public class Rettangolo extends Poligono{
int calcolaArea(){
A=b*h;
}
}

O no?

Le interfacce mi sono ancora ostiche.
Grazie per l'impegno (: