Skirtumas Tarp Virtualių Ir Abstrakčių

Skirtumas Tarp Virtualių Ir Abstrakčių
Skirtumas Tarp Virtualių Ir Abstrakčių

Video: Skirtumas Tarp Virtualių Ir Abstrakčių

Video: Skirtumas Tarp Virtualių Ir Abstrakčių
Video: Irmos Leščinskaitės kūrybos paroda „Mikropasauliai: abstraktūs atvaizdai”. 2024, Lapkritis
Anonim

Virtuali ir santrauka

Virtualusis ir abstraktusis yra du raktiniai žodžiai, naudojami daugumoje į objektą orientuotų (OO) programavimo kalbų, tokių kaip „Java“ir „C #“. Nors yra nežymūs skirtumai, ką tai reiškia skirtingomis kalbomis, tiek virtualūs, tiek abstraktūs raktiniai žodžiai suteikia dalinio įgyvendinimo jausmą subjektams, prie kurių jis yra susijęs.

Santrauka

Paprastai abstrakčių klasių, dar vadinamų abstrakčiomis bazinėmis klasėmis (ABC), negalima paruošti (negalima sukurti tos klasės egzemplioriaus). Taigi, abstrakčios klasės yra prasmingos turėti tik tuo atveju, jei programavimo kalba palaiko paveldėjimą (galimybę kurti poklasius pratęsiant klasę). Abstraktios klasės paprastai atspindi abstrakčią sąvoką ar esmę, iš dalies arba visai neįgyvendinant. Todėl santraukos klasės veikia kaip tėvų klasės, iš kurių gaunamos vaikų klasės, todėl vaikų klasė pasidalins nepilnomis tėvų klasės ypatybėmis, o funkcionalumas gali būti pridedamas prie jų užbaigimo. Santraukos klasėse gali būti abstrakčių metodų. Abstraktės klasės pratęsimo poklasiai gali įgyvendinti šiuos (paveldėtus) abstrakčius metodus. Jei vaikų klasė įgyvendina visus tokius abstrakčius metodus, tai yra konkreti klasė. Bet jei taip nėra,vaikų klasė taip pat tampa abstrakčia klase. Visa tai reiškia, kad kai programuotojas skiria klasę kaip santrauką, ji sako, kad klasė bus neišsami ir ji turės elementų, kuriuos reikia užpildyti paveldėtuose poklasiuose. Tai puikus būdas sukurti dviejų programuotojų sutartį, kuri supaprastina programinės įrangos kūrimo užduotis. Programuotojas, kuris rašo kodą paveldėti, turi tiksliai laikytis metodo apibrėžimų (bet, žinoma, gali turėti savo diegimą). „Java“ir „C #“sistemose abstrakčios klasės ir metodai deklaruojami naudojant abstraktų raktinį žodį. Tai yra puikus būdas sudaryti sutartį tarp dviejų programuotojų, o tai supaprastina programinės įrangos kūrimo užduotis. Programuotojas, kuris rašo kodą paveldėti, turi tiksliai laikytis metodo apibrėžimų (bet, žinoma, gali turėti savo diegimą). „Java“ir „C #“sistemose abstrakčios klasės ir metodai deklaruojami naudojant abstraktų raktinį žodį. Tai yra puikus būdas sudaryti sutartį tarp dviejų programuotojų, o tai supaprastina programinės įrangos kūrimo užduotis. Programuotojas, kuris rašo kodą paveldėti, turi tiksliai laikytis metodo apibrėžimų (bet, žinoma, gali turėti savo diegimą). „Java“ir „C #“sistemose abstrakčios klasės ir metodai deklaruojami naudojant abstraktų raktinį žodį.

Virtualus

Virtualūs metodai / funkcijos suteikia galimybę pasirinktinai pakeisti savo elgesį paveldimoje klasėje (naudojant funkciją tuo pačiu parašu). Virtualioji funkcija yra svarbi šiame scenarijuje. Tarkime, kad klasę kildina vaikų klasė, tada, kai naudojamas išvestinės klasės objektas, tai gali reikšti pagrindinės klasės ar išvestinės klasės objektą. Tačiau metodo skambučio elgesys gali būti dviprasmiškas, jei nepaisoma bazinės klasės metodų. Taigi, norint išspręsti šią dviprasmybę, naudojamas virtualusis raktinis žodis. Jei metodas yra pažymėtas kaip virtualus, vadinama išvestinės klasės funkcija (jei yra) arba dar vadinama pagrindinės klasės funkcija. Pavyzdžiui, C ++ programoje virtualusis raktinis žodis naudojamas būtent šiam tikslui. C # virtualus raktinis žodis naudojamas panašiai, tačiau, be to,raktinių žodžių nepaisymas turėtų būti naudojamas norint pakeisti visus nepaisomus metodus. Tačiau „Java“nėra aiškaus virtualaus raktinio žodžio. Visi nestatiški metodai laikomi virtualiais. Virtualios funkcijos be kūno vadinamos „Pure Virtual“funkcijomis. „Java“ir „C #“santraukos metodai iš tikrųjų yra „Pure Virtual“.

Skirtumas tarp virtualių ir abstrakčių

Nors abstraktus ir virtualus yra du raktiniai žodžiai / sąvokos, suteikiančios nebaigto įgyvendinimo prasmę susijusiems subjektams, jie turi skirtumų. Abstraktūs metodai (kurie turi būti apibrėžti abstrakčiose klasėse) visiškai neturi įgyvendinimo, o virtualieji metodai gali būti įgyvendinami. Jei abstrakčius metodus praplečia konkreti klasė, turi būti įdiegti visi paveldimi abstraktūs metodai, o paveldėti virtualūs metodai gali būti nepaisomi.

Rekomenduojama: