Abstrakčioji klasė prieš sąsają
Abstrakčioji klasė ir sąsaja yra dvi į objektus orientuotos konstrukcijos, randamos daugelyje objektinio programavimo kalbų, pvz., Java. Abstraktioji klasė gali būti laikoma abstrakčia įprastos (konkrečios) klasės versija, o sąsaja gali būti laikoma sutarties įgyvendinimo priemone. Abstrakti klasė yra klasė, kurios negalima inicijuoti, tačiau ją galima išplėsti. Sąsaja yra tipas, kurį turi įdiegti kitos klasės. „Java“abstrakčios klasės deklaruojamos naudojant „Abstract“raktinį žodį, o sąsajos raktinis žodis naudojamas sąsajai apibrėžti.
Kas yra abstrakčioji klasė?
Paprastai abstrakčių klasių, dar žinomų kaip abstrakčios pagrindinės klasės (ABC), negalima sukurti (negalima sukurti tos klasės egzemplioriaus). Taigi, abstrakčiosios klasės yra prasmingos tik tuo atveju, jei programavimo kalba palaiko paveldėjimą (galimybę sukurti poklasius išplečiant klasę). Abstrakčios klasės paprastai reiškia abstrakčią sąvoką arba subjektą, kuris iš dalies įgyvendinamas arba jo nėra. Todėl abstrakčios klasės veikia kaip pagrindinės klasės, iš kurių gaunamos antrinės klasės, todėl antrinė klasė dalinsis nepilnomis pagrindinės klasės ypatybėmis, o joms užbaigti galima pridėti funkcijų.
Abstrakčiose klasėse gali būti abstrakčių metodų. Poklasiai, išplečiantys abstrakčią klasę, gali įgyvendinti šiuos (paveldėtus) abstrakčiuosius metodus. Jei antrinė klasė įgyvendina visus tokius abstrakčius metodus, tai yra konkreti klasė. Bet jei ne, vaikų klasė taip pat tampa abstrakčia klase. Visa tai reiškia, kad kai programuotojas paskiria klasę kaip santrauką, ji sako, kad klasė bus neužbaigta ir joje bus elementų, kuriuos turės užpildyti paveldintys poklasiai. Tai puikus būdas sudaryti sutartį tarp dviejų programuotojų, o tai supaprastina programinės įrangos kūrimo užduotis. Programuotojas, rašantis kodą paveldėti, turi tiksliai laikytis metodo apibrėžimų (tačiau, žinoma, gali turėti savo įgyvendinimą).
Kas yra sąsaja?
Sąsaja yra abstraktus tipas, naudojamas nurodyti sutartį, kurią turėtų įgyvendinti klasės, įgyvendinančios tą sąsają. Sąsajos raktinis žodis naudojamas sąsajai apibrėžti, o raktažodis Implements naudojamas sąsajai pagal klasę įdiegti (Java programavimo kalba). Paprastai sąsajoje bus tik metodų parašai ir pastovios deklaracijos. Bet kuri sąsaja, kuri įgyvendina tam tikrą sąsają, turėtų įgyvendinti visus sąsajoje apibrėžtus metodus arba turi būti deklaruojama kaip abstrakčioji klasė. Java programoje objekto nuorodos tipas gali būti apibrėžtas kaip sąsajos tipas. Bet tas objektas turi būti nulinis arba turi turėti klasės objektą, kuris įgyvendina tą konkrečią sąsają. Naudodami „Java“raktinį žodį „Įgyvendina“, vienoje klasėje galite įdiegti kelias sąsajas.
Kuo skiriasi abstrakčioji klasė ir sąsaja?
Abstrakčios klasės paprastai reiškia abstrakčią sąvoką arba subjektą, kuris iš dalies įgyvendinamas arba jo nėra. Kita vertus, sąsaja yra abstraktus tipas, naudojamas norint nurodyti sutartį, kurią turėtų įgyvendinti klasės. Abstrakčios klasės turėtų būti paveldimos (arba išplėstos), o sąsajos turėtų būti įdiegtos. Abstrakčiose klasėse gali būti abstrakčių metodų, o sąsajoje turi būti tik abstrakčių metodų. Abstrakčiose klasėse gali būti bet kokių kintamųjų, tačiau sąsajos gali apibrėžti tik konstantas. Klasė negali paveldėti daugiau nei vienos abstrakčios klasės, tačiau gali įdiegti kelias sąsajas. Sąsaja negali įdiegti kitos sąsajos. Tačiau sąsaja gali išplėsti klasę.