Wiele języków programowania umożliwia deklarowanie klas jako abstrakcyjnych. Nie można tworzyć obiektu klasy abstrakcyjnej, lecz można po takiej klasie dziedziczyć. Klasa abstrakcyjna może zawierać metody czysto wirtualne, które muszą zostać zaimplementowane przez klasy pochodne. Mechanizmu tego używa się, jeśli twórca klasy chce dostarczyć jedynie części funkcjonalności, tworząc szkielet dla innych, bardziej wyspecjalizowanych klas.

W części języków programowania istnieje możliwość ograniczania widoczności dziedziczonych pól i metod:

elementy publiczne — nieograniczony dostęp, można je wywoływać zarówno z wnętrza klas, jak i spoza nich. elementy chronione — można wywoływać jedynie z wnętrza klasy oraz z wnętrza wszystkich klas pochodnych. elementy prywatne — można wywoływać jedynie z wnętrza bieżącej klasy, natomiast nie ma do nich dostępu również w klasach pochodnych.

Rodzaje dziedziczenia W programowaniu obiektowym wyróżniane jest dziedziczenie pojedyncze oraz dziedziczenie wielokrotne.