Abstrakti luokka vs. perintö
Tiivistelmäluokka ja perintö ovat kaksi tärkeätä oliokonseptia, jotka löytyvät monista olio-ohjelmointikieleistä, kuten Java. Tiivistelmäluokkaa voidaan pitää abstraktina versiona normaalista (konkreettisesta) luokasta, kun taas Perintö antaa uusille luokille mahdollisuuden pidentää muita luokkia. Tiivistelmäluokka on luokka, jota ei voida alustaa, mutta jota voidaan pidentää. Joten, abstraktit luokat ovat merkityksellisiä vain, jos ohjelmointikieli tukee perintöä. Java-ohjelmassa abstraktit luokat ilmoitetaan käyttämällä abstraktia avainsanaa, kun taas Extends-avainsanaa käytetään perimiseksi (super) luokasta.
Mikä on tiivistelmä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 vanhemmuusluokkina, joista johdetaan lasten luokat, 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 perintö?
Perintö on oliokeskeinen käsite, joka antaa uusille luokille mahdollisuuden laajentaa muita luokkia. Laajentaa avainsanaa käytetään perimän käsitteen toteuttamiseen Java-ohjelmointikielellä. Perintö tarjoaa käytännössä koodin uudelleenkäytön sallimalla olemassa olevan luokan ominaisuuksien ja käyttäytymisen laajentamisen vasta määritellyllä luokalla. Kun uusi alaluokka (tai johdettu luokka) laajentaa superluokan (tai yläluokan), tämä alaluokka perii kaikki superluokan ominaisuudet ja menetelmät. Alaluokka voi valinnaisesti ohittaa vanhemmaluokalta perimän käyttäytymisen (tarjota menetelmille uuden tai laajennetun toiminnallisuuden). Tyypillisesti alaluokka ei voi laajentaa useita superluokkia (esim. Java). Siksi et voi käyttää laajennuksia useaan perintöön. Usean perimisen saamiseksi sinun on käytettävä rajapintoja.
Mikä ero on abstraktilla luokalla ja perinnöllä??
Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, jolla on osittainen toteutus tai jota ei ole toteutettu. Perintö antaa uusille luokille mahdollisuuden jatkaa muita luokkia. Koska abstraktin luokkia ei voida välittää, sinun on käytettävä perintökäytäntöä abstraktien luokkien hyödyntämiseksi. Muuten abstraktilla luokalla ei ole käyttöä. Tiivistelmäluokat voivat sisältää abstraktimenetelmiä, ja kun luokkaa laajennetaan, kaikki menetelmät (tiivistelmä ja konkreettiset) periytyvät. Peritty luokka voi toteuttaa minkä tahansa tai kaikki menetelmät. Jos kaikkia abstraktimenetelmiä ei ole toteutettu, siitä luokasta tulee myös abstraktiluokka. Luokka ei voi periä useampaa kuin yhtä tiivistelmäluokkaa (tämä ei sinänsä ole tiivistelmäluokkien laatua, vaan perintörajoitus).