Dědičnost
- od existujících tříd objektů (tzv. rodičovských tříd) lze odvozovat nové třídy (tzv. dceřiné třídy)
- potomek (dceřiná třída) dědí veškeré atributy (vlastnosti) i metody
- potomku lze přidávat další atributy a metody anebo metody tzv. překrývat (v potomkovi lze definovat metodu se stejným názvem, jako má rodič, avšak může dělat něco jiného než v rodiči)
- dědičnost s polymorfismem umožňují řešit velmi obecným způsobem celou řadu souvisejících úloh najednou
Příklad dědičnosti:

V jazyce UML se používá pro znázornění dědičnosti šipek, kde šipky směřují od nejnižšího objektu (např.NákladníAuto) k nejvyššímu (Auto), tedy naopak než to mám znázorněné na obrázcích, pro větší srozumitelnost.
Třída NákladníAuto je odvozena od třídy Auto, takže pokud vytvoříme instanci typu NákladníAuto, budeme moci manipulovat jak s metodami
- zjistiNakladovyProstor
- nastavNakladovyProstor
- vejdeSeNaklad
Ale i s metodami předka, protože NákladníAuto je potomek Auta a některé metody jsou veřejné
- nastavVáhu
- nastavObjem
- zjistiVáhu
- zjistiObjem

Dědičnost používáme:
- když potřebujeme přidat nové vlastnosti a nechceme měnit původní třídu
- k odvození specializované třídy (např. pohyblivý objekt je ve hře speciálním případem obecného objektu)
Potomek
- také nazývaný dceřiná třída
- třída odvozená z jiné třídy děděním (někdy se také označuje jako subclass - podtřída)
- obecně v OOP může mít potomek i více přímých předků
Předek
- také nazývaný rodič
- třída, z níž je děděním odvozena jiná třída
- je předkem odvozené třídy (někdy se také označuje jako superclass - nadtřída)
- předek může mít více přímých potomků.
Příklad špatné dědičnosti
Někteří programátoři - začátečníci se pokoušejí doslova „vecpat“ dědičnost všude kde mohou, to, že nějaký objekt může mít více předků, neznamená, že toho náležitě využiji v každé situaci, jako např.:
Toto by vedlo v nejlepším případě k chybové hlášce kompilátoru, ale může být i hůře. Chyba je v tom, že v případě, že vytvoříme objekt typu kočka, tak vytváříme zároveň i objekt Zvíře a zároveň i Savce, který je také potomkem Zvířete, takže bychom měli dva objekty Zvíře a jak by asi kompilátor zareagoval na to, kdybychom chtěli zavolat nějakou metodu, či atribut ze superpředka Zvířete?
Hierarchie tříd
- strom odvozených tříd s jednou kořenovou třídou - předkem všech dalších tříd.
