Klasa betonu w języku Java jest klasą domyślną i jest klasą pochodną, która zapewnia podstawowe implementacje dla wszystkich metod, które nie są jeszcze zaimplementowane w klasie bazowej. Przeciwieństwem konkretnej klasy jest klasa abstrakcyjna, która nie zapewnia implementacji dla wszystkich jej metod.
Użytkownicy mogą myśleć o klasie abstrakcyjnej jako klasie, która jest używana jako klasa podstawowa, a następnie klasa konkretna jest klasą, która wypełnia wszystkie brakujące funkcje w klasie abstrakcyjnej.
Aby pomóc ludziom lepiej zrozumieć koncepcję konkretnej klasy i klasy abstrakcyjnej, należy zdefiniować pojęcie "klasy". Klasa jest członkiem domyślnego pakietu, chyba że jego plik źródłowy zawiera instrukcję pakietu. Klasa jest definiowana jako abstrakcyjna, gdy ma jedną lub więcej metod abstrakcyjnych lub nie implementuje wszystkich swoich abstrakcyjnych metod nadklasy. Jeśli klasa nie ma jawnego konstruktora, należy użyć domyślnego konstruktora. Klasy muszą być ogłoszone publicznie lub będą dostępne tylko dla członków tego samego pakietu. Klasa może mieć taką samą nazwę jak inna klasa, ale tylko wtedy, gdy te dwie klasy nie mają tego samego pakietu i tylko wtedy, gdy te dwie klasy nigdy nie zostaną zaimportowane do tego samego pliku.