Hierarhija razredov, imenovana tudi taksonomija razredov, je skupina sorodnih razredov, ki so povezani z dedovanjem, da delajo podobne stvari. Vrh hierarhije je lahko en sam osnovni razred, iz katerega so izpeljani vsi drugi razredi pod njim, ali pa ima hierarhija lahko več osnovnih razredov, katerih funkcionalnosti se pozneje združijo v enega ali več izpeljanih razredov. Razmerja med razredi lahko ponazorimo kot drevesa, vsako manjše drevo v veliki taksonomiji pa lahko štejemo tudi za hierarhijo.
Vse hierarhije razredov ne morejo imeti več korenin in struktura katere koli hierarhije razredov je v veliki meri odvisna od jezika, v katerem je napisana. C++ omogoča večkratno dedovanje, zato je mogoče zgraditi kompleksne hierarhije z več koreninami in več drevesi, ki se zlijejo med seboj. Java® je po drugi strani omejena na eno samo dedovanje, zato so njeni razredni odnosi običajno enostavnejši, zgrajeni kot relativno samostojna drevesa z enim samim korenom. Dedovanje vmesnikov lahko doda nekaj zapletenosti hierarhiji razredov v Javi®, vendar se vmesniki skoraj nikoli ne prikličejo v tako zapletenem okviru, da bi bilo kot združevanje dreves skupaj.
Komponente hierarhije razredov se lahko razlikujejo po vrsti in funkciji, če se vedno upoštevajo pravila jezika glede dedovanja. Razredi v hierarhiji so lahko javni, zaščiteni, abstraktni, konkretni ali virtualni. Uporabljajo se lahko tudi vmesniki, globalne funkcije in prijatelji. Odvisno od računalniškega jezika se lahko nekatere od teh vrst bolje dedujejo kot druge. Na splošno so hierarhije zelo prilagodljive in se lahko uporabljajo na različne načine za številne namene.
Ni strogih pravil o tem, kje je treba določene vrste razredov postaviti v hierarhijo. Vsak razred je lahko vsak od zgoraj omenjenih vrst. Na splošno bi morali biti zadnji razredi v hierarhiji, ki nimajo izpeljanih razredov pod seboj, javni in konkretni. Ker lahko obstajajo tudi čisto abstraktne hierarhije razredov, je to le pravilo.
Čeprav je hierarhija razredov lahko uporabno orodje za organiziranje kode in kapsuliranje funkcionalnosti, se lahko včasih zgodi, da pregloboko poglobitev v hierarhijo dejansko zmede kodo, namesto da bi jo razjasnila in olajšala vzdrževanje. Izgradnja močnega odnosa med številnimi razredi zahteva določeno mero predvidevanja; čeprav bi bilo sprva morda lažje razbiti kodo na veliko majhnih kosov, bo s temi majhnimi koščki pozneje morda težje upravljati. Ko je pravilno zgrajena, hierarhija razredov pomaga razvijalcem in uporabnikom pri določanju, kako razredi delujejo. Če je zgrajena brez vzdrževanja in jasnosti v mislih, so številne stopnje dedovanja lahko zmedene, če se ozremo nazaj in razumemo.