Oznacza to, że system nie może poprawnie reagować na sytuacje, gdy dotychczasowy student zostaje dodatkowo pracownikiem, gdyż konieczne jest wtedy utworzenie całkowicie nowego obiektu.
Innym istotnym ograniczeniem jest uzależnienie kodu od konkretnej implementacji klasy, które może doprowadzić do błędów przy jej zmianie. Tego typu problem pojawia się zwłaszcza gdy dziedziczymy między klasami znajdującymi się w różnych komponentach (tzw. Problem kruchości klasy podstawowej).
Rozwiązania alternatywne Istnieje kilka rozwiązań alternatywnych eliminujących poszczególne ograniczenia dziedziczenia.
Kompozycja
Kompozycja polega na zastąpieniu dziedziczenia składaniem mniejszych obiektów. Posługując się dalej powyższym przykładem, możemy zostawić klasę Osoba, która posiada listę ról takich, jak Pracownik czy Student. Obiektowi można przydzielać nowe oraz usuwać stare role w dowolnym momencie wykonania programu, eliminując tym samym problemy pojedynczości oraz niezmienności. Wadą kompozycji jest większe zużycie pamięci (dużo małych obiektów) oraz niewielki spadek wydajności podczas dostępu do metod.
Kompozycję można stosować w każdym języku obsługującym programowanie obiektowe.
Domieszki