ok
ma cosa è quest'istruzione ?

codice:
protected abstract ContenitoreDati<E> creaContenitore();
Un metodo?

Come hai detto tu una classe astratta va estesa da una classe concreta ;

La classe concreta è questa :

codice:
public class ContenitoreDatiArray<E> extends ContenitoreDatiAstratto<E>{

....
.....
....
in questa classe compare ancora l'istruzione che non ho capito che questa volta restituisce un oggetto

codice:
@Override
protected ContenitoreDati<E> creaContenitore(){
return new ContenitoreDatiArray(size+1);
}
Che cos'è quest' istruzione ? Un metodo ?
perchè nell'istruzione precedente non viene restituito nulla?

codice:
protected abstract ContenitoreDati<E> creaContenitore();