Schopnost třídy odvozovat vlastnosti a metody od jiné třídy se nazývá dědičnost. Dědičnost je jednou z nejdůležitějších vlastností objektově orientovaného programování.
Dědičnost je vlastnost nebo proces, při kterém se z existujících tříd vytvářejí nové třídy. Nově vytvořená třída se nazývá "potomek" a již existující třída se nazývá "rodič". O odvozené třídě se říká, že dědí od rodiče.
Když říkáme, že potomek dědí od rodiče, znamená to, že odvozená třída zdědí všechny vlastnosti základní třídy, aniž by měnila vlastnosti základní třídy, a může si přidat nové vlastnosti. Tyto nové vlastnosti v potomkovi neovlivní rodiče.
Vezměme si skupinu vozidel. Je třeba vytvořit třídy pro autobus, osobní automobil a nákladní automobil. Metody fuelAmount(), capacity(), applyBrakes() budou pro všechny tři třídy stejné. Pokud tyto třídy vytvoříme tak, že se vyhneme dědičnosti, pak musíme všechny tyto funkce zapsat do každé ze tří tří tříd, jak je znázorněno na obrázku níže:
Je zřejmé, že výše uvedený postup vede k duplicitě stejného kódu. Tím se zvyšuje pravděpodobnost výskytu chyb a redundance dat. Aby se předešlo tomuto typu situace, používá se dědičnost. Pokud vytvoříme třídu Vehicle a zapíšeme do ní tyto tři funkce a ostatní třídy budou od třídy Vehicle dědit, pak se jednoduše vyhneme duplicitě dat a zvýšíme znovupoužitelnost. Podívejte se na následující schéma, ve kterém jsou tyto tři třídy zděděny ze třídy vehicle:
Příklad: