Što je osnovna klasa?

Osnovna klasa, također nazvana superklasa, računalni je objekt koji djeluje kao temelj za jednu ili više izvedenih klasa. Bilo koji računalni jezik koji je sposoban za nasljeđivanje može stvoriti osnovnu klasu. Ovisno o svom preciznom tipu, osnovne klase mogu, ali ne moraju biti sposobne za inicijalizaciju — dodjeljivanje početne vrijednosti objektu — same, ali uvijek daju neku vrstu zajedničke funkcionalnosti svakoj klasi koja nasljeđuje od njih. Nikada ne postoji ograničenje za broj izvedenih klasa ili podklasa koje osnovne klase mogu imati, ali može postojati ograničenje, ovisno o jeziku računala, za broj osnovnih klasa koje izvedena klasa može imati. Za jezice koji dopuštaju da izvedena klasa ima samo jednu bazu kaže se da provode jedno nasljeđivanje, dok oni koji dopuštaju izvedenoj klasi da ima više osnovnih klasa koriste višestruko nasljeđivanje.

Konkretne osnovne klase mogu se inicijalizirati same; odnosno može se napraviti objekt tipa osnovne klase. Ako je klasa Primjer baza za izvedenu klasu Primjer2, mogu se napraviti i objekt tipa Primjer2 i objekt tipa Primjer. Objekt tipa Primjer može se napraviti samo eksplicitnim pozivanjem tog tipa objekta; stvaranje objekta tipa Primjer2 ne čini sekundarni objekt tipa Primjer. U svakom slučaju, tip objekta koji se kreira gradi samo sebe instancu.

Apstraktne bazne klase, nasuprot tome, ne mogu se inicijalizirati same, što znači da se objekt osnovne klase ne može napraviti sam. Ako je klasa Primjer3 apstraktna baza za izvedenu klasu Primjer4, može se napraviti samo objekt tipa Primjer4. Iako tip Primjer4 uključuje podatke iz tipa Primjer3, pokušaj izrade objekta isključivo tipa Primjer3 rezultirat će pogreškom. Ova funkcionalnost ponekad može biti korisna, osobito ako klasa Primjer3 sadrži privatne podatke koji bi trebali biti strogo regulirani.

Ovisno o jeziku na kojem se pojavljuje, osnovna klasa može imati malo različita ponašanja i izrazito različita imena. U Javi® se osnovne klase uvijek nazivaju tim imenom, dok se u C++, ovisno o njihovoj strukturi, mogu nazvati virtualnim klasama. Razlike u nazivu i funkcionalnosti, iako značajne u smislu računalnih jezika koji se koriste, ne impliciraju velike razlike u principu koji stoji iza klasa. Osnovna klasa se uvijek koristi za enkapsuliranje zajedničke funkcionalnosti i podataka za svoje izvedene klase, bez obzira na jezik.