Tiivistelmä luokka vs. käyttöliittymä
Tiivistelmäluokka ja käyttöliittymä ovat kahta oliopohjaista rakennetta, joita löytyy monista olio-ohjelmointikieleistä kuten Java. Tiivistelmäluokkaa voidaan pitää abstraktina versiona normaalista (konkreettisesta) luokasta, kun taas rajapinta voidaan pitää keinona sopimuksen toteuttamiseen. Tiivistelmäluokka on luokka, jota ei voida alustaa, mutta jota voidaan pidentää. Rajapinta on tyyppi, joka muiden luokkien on toteutettava. Java-ohjelmissa abstraktit luokat ilmoitetaan käyttämällä abstraktia avainsanaa, kun taas rajapinnan avainsanaa käytetään rajaamaan rajapinta.
Mikä on abstrakti luokka?
Tyypillisesti abstrakteja luokkia, jotka tunnetaan myös nimellä abstraktit perusluokat (ABC), ei voida toteuttaa (kyseisen luokan esiintymää ei voida luoda). Joten, abstraktilla luokilla on merkitystä vain, jos ohjelmointikieli tukee perintöä (kyky luoda alaluokkia luokan laajentamisesta). Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, jolla on osittainen toteutus tai jota ei ole toteutettu. Siksi abstraktit luokat toimivat vanhemmaluokkina, joista lastenluokat johdetaan, jotta lapsiluokalla on vanhemman luokan puutteelliset ominaisuudet, ja toiminnallisuus voidaan lisätä niiden suorittamiseen.
Abstraktit luokat voivat sisältää abstrakteja menetelmiä. Alaluokat, jotka laajentavat abstraktia luokkaa, voivat toteuttaa nämä (perinnölliset) abstraktit menetelmät. Jos lapsiluokka toteuttaa kaikki nämä abstraktit menetelmät, se on konkreettinen luokka. Mutta jos ei, lapsiluokasta tulee myös abstrakti luokka. Kaikki tämä tarkoittaa sitä, että kun ohjelmoija nimittää luokan abstraktiksi, hän sanoo, että luokka on epätäydellinen ja siinä on elementtejä, jotka on täytettävä perittävällä alaluokalla. Tämä on hieno tapa luoda sopimus kahden ohjelmoijan välillä, mikä yksinkertaistaa ohjelmistokehityksen tehtäviä. Ohjelmoijan, joka kirjoittaa koodin periäkseen, on noudatettava menetelmämääritelmiä tarkasti (mutta tietenkin sillä voi olla oma toteutus).
Mikä on käyttöliittymä?
Rajapinta on abstrakti tyyppi, jota käytetään määrittelemään sopimus, joka olisi toteutettava luokan toimesta, jotka toteuttavat kyseisen rajapinnan. Rajapinnan avainsanaa käytetään rajapinnan määrittelemiseen ja Implements-avainsanaa käytetään rajapinnan toteuttamiseen luokassa (Java-ohjelmointikielellä). Yleensä rajapinta sisältää vain menetelmä-allekirjoituksia ja vakioilmoituksia. Jokaisen rajapinnan, joka toteuttaa tietyn rajapinnan, olisi toteutettava kaikki rajapinnassa määritellyt menetelmät tai ne olisi julistettava abstraktiksi luokkaksi. Java-järjestelmässä kohdeviittauksen tyyppi voidaan määritellä rajapintatyypiksi. Mutta kyseisen objektin on joko oltava tyhjä tai siinä tulisi olla luokan objekti, joka toteuttaa kyseisen rajapinnan. Java-sovelluksen Implements-avainsanan avulla voit toteuttaa useita käyttöliittymiä samaan luokkaan.
Mitä eroa abstraktin luokan ja käyttöliittymän välillä on??
Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, jolla on osittainen toteutus tai jota ei ole toteutettu. Toisaalta rajapinta on abstrakti tyyppi, jota käytetään määrittelemään sopimus, joka luokkien tulisi toteuttaa. Abstraktit luokat tulisi periä (tai laajentaa), kun taas rajapinnat tulisi toteuttaa. Abstraktit luokat voivat sisältää abstrakteja menetelmiä, kun taas käyttöliittymässä tulisi olla vain abstrakteja menetelmiä. Tiivistelmäluokat voivat sisältää mitä tahansa muuttujia, mutta rajapinnat voivat määritellä vain vakioita. Luokka ei voi periä useampaa kuin yhtä abstraktia luokkaa, mutta se voi toteuttaa useita rajapintoja. Rajapinta ei voi toteuttaa toista rajapinta. Rajapinta voi kuitenkin pidentää luokkaa.