V programování je nadtřída nebo nadřazená třída třída, od které jsou odvozeny další třídy. Třídy odvozené od nadtřídy se nazývají podřízené třídy , odvozené třídy nebo podtřídy .
Nadtřída vám umožňuje vytvořit obecné rozhraní, které zapouzdřuje vlastní funkce pomocí virtuálních funkcí .
Mechanismus nadtřídy je široce používán v objektově orientovaném programování díky své znovupoužitelnosti , které je dosaženo prostřednictvím společných funkcí zapouzdřených v modulárních objektech.
Programovací jazyky mohou podporovat abstraktní i konkrétní supertřídy.
Základní třída je třída, která nemá žádnou nadtřídu, a je tedy na konci stromu podtříd. Většina objektově orientovaných programovacích systémů poskytuje knihovnu tříd, ze které vývojář staví svou vlastní. Tyto knihovny často poskytují jednu nebo poměrně omezenou sadu základních tříd, které tvoří jádro knihovny.
V případě, že jazyk nebo knihovna má pouze jednu základní třídu, pak se nazývá nejvyšší typ .
V UML může mít třída svou vlastní sadu kořenových vlastností, které označují, že se jedná o základní třídu.
Ve stylu C++ (který se používá v C# a dalších jazycích) se místo termínu "supertřída" používá termín "základní třída".
V programovacím jazyce Java se metoda nazývá k určení nadtřídy třídy getSuperclass. Tato metoda vrátí objekt Class reprezentující nadtřídu dané třídy nebo vrátí hodnotu null, pokud třída žádné nadtřídy nemá. K určení všech rodičů třídy se metoda getSuperclassvolá opakovaně, dokud nevrátí hodnotu null.
Následující příklad vyhledá názvy nadřazených tříd pro třídu Button pomocí metody getSuperclass:
import java.lang.reflect.* ; import java.awt.* ; třída SampleSuper { public static void main ( String [] args ) { Tlačítko b = nové Tlačítko (); printSuperclasses ( b ); } static void printSuperclasses ( Object o ) { Class subclass = o . getclass (); Třída nadtřída = podtřída . getSuperclass (); while ( superclass != null ) { String className = superclass . getName (); Systém . ven . println ( název třídy ); podtřída = nadtřída ; nadtřída = podtřída . getSuperclass (); } } }Program vrací:
komponenta java.awt java.lang.Object