Niezmienniki mogą być implementowane poprzez zabronienie bezpośredniego dostępu do atrybutów obiektu i utworzenie dodatkowych metod dostępowych, które oprócz ich ustawiania, sprawdzają także niezmienniki. W niektórych językach niezmienniki można definiować bezpośrednio jako część specyfikacji klasy.
Elementy statyczne Część języków dopuszcza tworzenie tzw. metod oraz atrybutów statycznych. Nie są one związane z żadnym konkretnym obiektem klasy, lecz tworzą globalny stan oraz globalnie dostępne operacje, które można wywoływać nawet wtedy, gdy nie posiadamy żadnej instancji klasy.
Rodzaje klas Istnieje wiele rodzajów klas różniących się właściwościami i zastosowaniami. Należy zauważyć, że poniższe rodzaje nie są rozłączne. Przykładowo, ponieważ nie może istnieć klasa, która jest jednocześnie finalna i abstrakcyjna, można wnioskować, że klasy finalne są szczególnym przypadkiem klas właściwych.
Klasy właściwe Klasą właściwą nazywamy każdą klasę, która może być instancjonowana.
Klasy abstrakcyjne
Klasa abstrakcyjna to przeciwieństwo klasy właściwej – nie można utworzyć obiektu takiej klasy. Ma ona zastosowanie jedynie wtedy, gdy język programowania obsługuje dziedziczenie.