Što je apstraktna klasa?

U objektno orijentiranom programiranju, apstraktna klasa osigurava osnovnu klasu koja se može koristiti za pružanje djelomične implementacije i sučelja drugim klasama. Oni su sami po sebi nepotpuni i koriste se u situacijama nasljeđivanja u mnogim programskim jezicima kao što su Java, C++ i C#. Njihova upotreba kao osnovne klase znači da se često nazivaju apstraktnom baznom klasom (ABC).

Sastavni dio objektno orijentiranog programiranja, apstrakcija podataka uklanja nepotrebne detalje objekta. U biti, svodi predmet na njegove glavne identifikacijske karakteristike. Ove osnovne karakteristike daju nacrt koji se može koristiti za stvaranje drugih objekata s istim svojstvima, samo se razlikuju u detaljima.

Ovaj nacrt je definiran kao klasa. Klase se koriste za kapsuliranje koda, što olakšava programeru, jer on može referencirati specifične uobičajene rutine umjesto da ih stalno piše. Programeri stvaraju podređene objekte iz klasa, a ti objekti nasljeđuju funkcije i metode unutar roditeljske klase.

Svrha apstraktne klase je da bude okvir na kojem se grade druge klase. Objekti se ne mogu kreirati izravno iz apstraktne klase, samo iz podklasa koje pripadaju apstraktnoj klasi. Da bi se objekt naslijedio od apstraktne klase, mora se kreirati podklasa. Objekti kreirane podklase apstraktne klase nasljeđuju svojstva te apstraktne klase.

Svaka klasa modelira koncept, a apstraktne klase nastoje modelirati apstraktnije koncepte koristeći apstraktne metode. Apstraktne metode su potprogrami unutar apstraktne klase koji ne sadrže implementaciju. Ovi se potprogrami koriste kao rezervirana mjesta koja će ih prepisati podklasa ili objekt dizajniran na temelju klase koja sadrži samu apstraktnu metodu.

Postoje različite metode stvaranja apstraktne klase. Na primjer, u C++, apstraktna klasa se stvara razvijanjem klase s barem jednom apstraktnom metodom ili čistom virtualnom funkcijom. Java za označavanje apstraktne klase koristi ključnu riječ “apstraktno”. Oni, međutim, nisu definirani u programskim jezicima koji ne podržavaju ideju nasljeđivanja.
Nasljeđivanje je proces stvaranja novih objekata iz klasa gdje novi objekti mogu koristiti funkcije i metode definirane unutar svojih roditeljskih klasa bez potrebe za ponovnim postavljanjem programa. Zbog toga je apstraktna klasa korisna. Podređene klase i podređeni objekti tih podklasa nasljeđuju svojstva od roditeljske apstraktne klase. Apstraktne klase smatraju se superklasama i nalaze se na vrhu hijerarhije strukture klasa, tako da nemaju smisla u jeziku koji ne podržava nasljeđivanje.