Kas yra abstrakčioji klasė?

Objektiniame programavime abstrakčioji klasė suteikia bazinę klasę, kurią galima naudoti norint suteikti kitoms klasėms dalinį įgyvendinimą ir sąsają. Jie patys savaime yra neišsamūs ir naudojami paveldėjimo situacijose daugelyje programavimo kalbų, tokių kaip Java, C++ ir C#. Jų naudojimas kaip bazinė klasė reiškia, kad jie dažnai vadinami abstrakčia bazine klase (ABC).

Neatsiejama objektinio programavimo dalis, duomenų abstrakcija pašalina nereikalingas objekto detales. Iš esmės jis sujungia objektą iki pagrindinių jo identifikavimo savybių. Šios pagrindinės charakteristikos sudaro planą, kurį galima naudoti kuriant kitus objektus, turinčius tas pačias savybes, tik skiriasi detalėmis.

Šis planas apibrėžiamas kaip klasė. Klasės naudojamos kodui įterpti, kad būtų lengviau programuotojui, nes jis gali nurodyti konkrečias įprastas procedūras, užuot rašęs jas nuolat. Programuotojai sukuria antrinius objektus iš klasių, o šie objektai paveldi pirminės klasės funkcijas ir metodus.

Abstrakčios klasės tikslas yra būti pagrindu, ant kurio kuriamos kitos klasės. Objektai negali būti sukurti tiesiogiai iš abstrakčios klasės, tik iš poklasių, priklausančių abstrakčiai klasei. Kad objektas būtų paveldėtas iš abstrakčios klasės, turi būti sukurtas poklasis. Sukurto abstrakčios klasės poklasio objektai paveldi tos abstrakčios klasės savybes.

Kiekviena klasė modeliuoja sąvoką, o abstrakčios klasės dažniausiai modeliuoja abstrakčias sąvokas, naudodamos abstrakčius metodus. Abstraktūs metodai yra abstrakčios klasės paprogramės, kuriose nėra jokio įgyvendinimo. Šios paprogramės naudojamos kaip rezervuotos vietos, kurias perrašo poklasis arba objektas, sukurtas pagal klasę, kurioje yra pats abstraktus metodas.

Yra įvairių metodų, kaip sukurti abstrakčią klasę. Pavyzdžiui, C++ kalboje abstrakti klasė sukuriama kuriant klasę su bent vienu abstrakčiu metodu arba gryna virtualia funkcija. „Java“ naudoja raktinį žodį „abstract“, kad apibūdintų abstrakčią klasę. Tačiau jie nėra apibrėžti programavimo kalbose, kurios nepalaiko paveldėjimo idėjos.
Paveldėjimas yra naujų objektų iš klasių kūrimo procesas, kai naujieji objektai gali naudoti funkcijas ir metodus, apibrėžtas jų pagrindinėse klasėse, nereikalaujant iš naujo nustatyti programos. Štai kodėl abstrakčioji klasė yra naudinga. Antrinės klasės ir tų poklasių antriniai objektai paveldi savybes iš pirminės abstrakčios klasės. Abstrakčios klasės laikomos superklasėmis ir yra klasių struktūros hierarchijos viršuje, todėl jos neturi reikšmės kalboje, kuri nepalaiko paveldėjimo.