Kaj je osnovni razred?

Osnovni razred, imenovan tudi nadrazred, je računalniški objekt, ki deluje kot osnova za enega ali več izpeljanih razredov. Vsak računalniški jezik, ki je sposoben dedovanja, lahko ustvari osnovni razred. Glede na njihov natančen tip se lahko osnovni razredi sami ali pa ne morejo inicializirati – dodeliti začetno vrednost objektu – sami, vendar vedno dajejo nekakšno skupno funkcionalnost vsakemu razredu, ki podeduje od njih. Nikoli ni omejitve števila izpeljanih razredov ali podrazredov, ki jih lahko imajo osnovni razredi, lahko pa obstaja omejitev, odvisno od računalniškega jezika, za število osnovnih razredov, ki jih lahko ima izpeljani razred. Za jezike, ki dovoljujejo, da ima izpeljani razred samo eno bazo, se pravi, da uveljavljajo eno dedovanje, medtem ko tisti, ki dovoljujejo, da ima izpeljani razred več osnovnih razredov, uporabljajo večkratno dedovanje.

Konkretne osnovne razrede je mogoče inicializirati sami; to pomeni, da je mogoče izdelati objekt tipa osnovnega razreda. Če je razred Primer osnova za izpeljani razred Primer2, je mogoče izdelati objekt tipa Primer2 in objekt tipa Primer. Objekt tipa Primer je mogoče izdelati samo z izrecnim klicem tega tipa objekta; ustvarjanje objekta tipa Primer2 ne naredi sekundarnega objekta tipa Primer. V vsakem primeru ustvarjeni tip objekta zgradi samo svoj primerek.

Abstraktnih osnovnih razredov, nasprotno, ni mogoče inicializirati sami, kar pomeni, da objekta osnovnega razreda ni mogoče izdelati sam. Če je razred Primer3 abstraktna osnova za izpeljani razred Primer4, je mogoče izdelati samo objekt tipa Primer4. Čeprav tip Primer4 vključuje podatke iz tipa Primer3, bo poskus izdelave objekta samo tipa Primer3 povzročil napako. Ta funkcionalnost je lahko včasih uporabna, zlasti če razred Primer3 vsebuje zasebne podatke, ki jih je treba strogo regulirati.

Glede na jezik, v katerem je prikazan, ima lahko osnovni razred nekoliko drugačno obnašanje in izrazito različna imena. V Javi® se osnovni razredi vedno imenujejo s tem imenom, medtem ko jih v C++, odvisno od njihove strukture, lahko imenujemo virtualni razredi. Razlike v imenu in funkcionalnosti, čeprav bistvene glede na uporabljene računalniške jezike, ne pomenijo večjih razlik v principu, ki stoji za razredi. Osnovni razred se vedno uporablja za kapsuliranje skupne funkcionalnosti in podatkov za njegove izpeljane razrede, ne glede na jezik.