V realitě jsme často svědci toho, že třídy jsou podtřídami jiných:
tj. všechny objekty podtřídy jsou zároveň objekty nadtřídy, např. každý objekt typu (třídy) ChovatelPsu je současně typu Clovek nebo
např. každý objekt typu (třídy) Pes je současně typu DomaciZvire (alespoň v našem výseku reality - existují i psi "nedomácí"...)
Podtřída je tedy "zjemněním" nadtřídy:
přebírá její vlastnosti a zpravidla přidává další, rozšiřuje svou nadtřídu/předka
V Javě je každá uživatelem definovaná třída potomkem nějaké jiné - neuvedeme-li předka explicitně, je předkem vestavěná třída Object