Ero Virtuaalisen Ja Abstraktin Välillä

Ero Virtuaalisen Ja Abstraktin Välillä
Ero Virtuaalisen Ja Abstraktin Välillä

Video: Ero Virtuaalisen Ja Abstraktin Välillä

Video: Ero Virtuaalisen Ja Abstraktin Välillä
Video: Oppivelvollisuus laajenee - opetusministeri Saramon virtuaalinen kouluvierailu, Kaukovainion koulu 2024, Saattaa
Anonim

Virtuaalinen vs tiivistelmä

Virtuaalinen ja tiivistelmä ovat kaksi avainsanaa, joita käytetään useimmissa Object Oriented (OO) -ohjelmointikielissä, kuten Java ja C #. Vaikka eri kielillä on pieniä eroja siinä, mitä se tarkoittaa, sekä virtuaaliset että tiivistetyt avainsanat tarjoavat osittaisen toteutuksen tunteen kiinnittyville kokonaisuuksille.

Abstrakti

Tyypillisesti tiivistelmäluokkia, joita kutsutaan myös nimellä ABC (Abstract Base Classes), ei voida instantisoida (kyseisen luokan instanssia ei voida luoda). Joten abstrakteilla luokilla on merkitystä vain, jos ohjelmointikieli tukee perintöä (kyky luoda alaluokkia luokan laajentamisesta). Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, joka on toteutettu osittain tai kokonaan. Siksi abstraktit luokat toimivat vanhempien luokkina, joista lapsiluokat on johdettu, niin että lapsiluokka jakaa vanhempien luokan puutteelliset ominaisuudet ja toiminnot voidaan lisätä niiden täydentämiseksi. Abstraktit luokat voivat sisältää abstrakteja menetelmiä. Abstraktin luokan laajentavat alaluokat voivat toteuttaa nämä (perityt) abstraktit menetelmät. Jos lapsiluokka toteuttaa kaikki tällaiset abstraktit menetelmät, se on konkreettinen luokka. Mutta jos ei,lapsiluokasta tulee myös abstrakti luokka. Tämä kaikki tarkoittaa sitä, että kun ohjelmoija nimittää luokan tiivistelmäksi, hän sanoo, että luokka on epätäydellinen ja että siinä on elementtejä, jotka perittävien alaluokkien on täytettävä. Tämä on hieno tapa luoda sopimus kahden ohjelmoijan välillä, mikä yksinkertaistaa ohjelmistokehityksen tehtäviä. Ohjelmoijan, joka kirjoittaa koodin perimään, on noudatettava tarkasti menetelmän määritelmiä (mutta tietysti voi olla oma toteutus). Javassa ja C #: ssä abstraktit luokat ja menetelmät ilmoitetaan käyttämällä abstraktia avainsanaa. Tämä on hieno tapa luoda sopimus kahden ohjelmoijan välillä, mikä yksinkertaistaa ohjelmistokehityksen tehtäviä. Ohjelmoijan, joka kirjoittaa koodin perimään, on noudatettava tarkasti menetelmän määritelmiä (mutta tietysti voi olla oma toteutus). Javassa ja C #: ssä abstraktit luokat ja menetelmät ilmoitetaan käyttämällä abstraktia avainsanaa. Tämä on hieno tapa luoda sopimus kahden ohjelmoijan välillä, mikä yksinkertaistaa ohjelmistokehityksen tehtäviä. Ohjelmoijan, joka kirjoittaa koodin perimään, on noudatettava tarkasti menetelmän määritelmiä (mutta tietysti sillä voi olla oma toteutus). Javassa ja C #: ssä abstraktit luokat ja menetelmät ilmoitetaan käyttämällä abstraktia avainsanaa.

Virtuaalinen

Virtuaaliset menetelmät / toiminnot tarjoavat mahdollisuuden korvata sen käyttäytymisen perivällä luokalla (käyttämällä samaa allekirjoitusta sisältävää toimintoa). Virtuaalitoiminnon käsite on tärkeä seuraavassa skenaariossa. Oletetaan, että luokka on johdettu alaluokasta, jolloin aina kun johdetun luokan objektia käytetään, se voi viitata perusluokan tai johdetun luokan esineeseen. Menetelmän kutsukäyttäytyminen voi kuitenkin olla epäselvä, jos perusluokan menetelmät ohitetaan. Joten tämän epäselvyyden ratkaisemiseksi käytetään virtuaalista avainsanaa. Jos menetelmä on merkitty virtuaaliseksi, johdetun luokan funktiolle kutsutaan (jos sellainen on) tai muuten kutsutaan perusluokan funktio. Esimerkiksi C ++: ssa virtuaalista avainsanaa käytetään juuri tähän tarkoitukseen. C #: ssä virtuaalista avainsanaa käytetään samalla tavalla, mutta lisäksiavainsanan ohitusta tulisi käyttää kaikkien ohitettujen menetelmien muokkaamiseen. Mutta Javassa ei ole nimenomaista virtuaalista avainsanaa. Kaikkia ei-staattisia menetelmiä pidetään virtuaalisina. Virtuaalitoimintoja, joissa ei ole runkoa, kutsutaan puhtaiksi virtuaalitoiminnoiksi. Javassa ja C #: ssä abstraktit menetelmät ovat itse asiassa Pure Virtual.

Ero virtuaalisen ja abstraktin välillä

Vaikka tiivistelmä ja virtuaalinen ovat kaksi avainsanaa / käsitettä, jotka merkitsevät epätäydellisen toteutuksen merkitystä siihen liittyville entiteeteille, niillä on kuitenkin eroja. Abstrakteilla menetelmillä (jotka on määriteltävä abstraktien luokkien sisällä) ei ole lainkaan toteutusta, kun taas virtuaalisilla menetelmillä voi olla toteutus. Jos abstrakteja menetelmiä laajennetaan konkreettisella luokalla, kaikki perityt abstraktit menetelmät on toteutettava, kun taas perityt virtuaaliset menetelmät voidaan ohittaa.

Suositeltava: