Le classi astratte non possono essere istanziate. Infatti, se noti, non c'è scritto da nessuna parte
new ByteBuffer( ... )
Bensì, c'è il richiamo ad un metodo statico... cosa fa quel metodo statico? Molto probabilmente istanzierà una sottoclasse concreta di ByteBuffer e ritorna il valore, che verrà assegnato ad una variabile di tipo ByteBuffer: infatti, non è possibile istanziare oggetti di classi astratte, ma è ovviamente possibilissimo dichiarare variabili di tipo astratto (essendo solo dei reference). Allo stesso modo è possibile dichiarare variabili di tipo "interfaccia".
Per saperlo dovrai andarti a guardare il sorgente di ByteBuffer oppure farti stampare il getClass() dell'oggetto out. Ma di per se non ha nessuna importanza quale sia esattamente la classe concreta... quel che importa è che questa sarà sicuramente una implementazione di ByteBuffer e di conseguenza disporrà di tutti i suoi metodi (e, quindi, tu potrai usarne tutti [e soli] i suoi metodi)
Ciao.![]()