Clasa de beton din Java este clasa implicită și este o clasă derivată care oferă implementările de bază pentru toate metodele care nu sunt deja implementate în clasa de bază. Opusul clasei de beton este clasa abstractă, care nu oferă implementări pentru toate metodele sale.
Utilizatorii se pot gândi la clasa abstractă ca clasă care este folosită ca clasă de bază și apoi clasa concretă este clasa care completează toate funcționalitățile lipsă din clasa abstractă.
Pentru a ajuta oamenii să înțeleagă mai bine conceptul clasei concrete și clasei abstracte, trebuie definit conceptul de "clasă". O clasă este un membru al unui pachet implicit, cu excepția cazului în care fișierul sursă conține o instrucțiune de pachet. O clasă este definită ca abstractă atunci când are una sau mai multe metode abstracte sau nu implementează toate metodele abstracte ale superclaselor sale. Dacă o clasă nu are un constructor explicit, atunci trebuie folosit constructorul implicit. Clasele trebuie declarate publice sau altfel ele vor fi accesibile numai membrilor aceluiași pachet. O clasă poate avea același nume ca o altă clasă, dar numai dacă cele două clase nu împărtășesc același pachet și numai dacă cele două clase nu sunt niciodată importate în același fișier.