Dallimi midis virtuales dhe abstraktit

Dallimi midis virtuales dhe abstraktit
Dallimi midis virtuales dhe abstraktit

Video: Dallimi midis virtuales dhe abstraktit

Video: Dallimi midis virtuales dhe abstraktit
Video: Samsung Galaxy S23 Ultra vs iPhone 14 Pro Max - Which is the Flagship KING? 2024, Korrik
Anonim

Virtual vs Abstrakt

Virtual dhe Abstract janë dy fjalë kyçe të përdorura në shumicën e gjuhëve programuese të orientuara nga objekti (OO) si Java dhe C. Megjithëse ka dallime të vogla në atë që do të thotë në gjuhë të ndryshme, fjalët kyçe virtuale dhe abstrakte ofrojnë një kuptim të zbatimit të pjesshëm për entitetet të cilave u bashkangjitet.

Abstrakt

Në mënyrë tipike, klasat abstrakte, të njohura gjithashtu si klasat bazë abstrakte (ABC), nuk mund të instantohen (një shembull i asaj klase nuk mund të krijohet). Pra, klasat abstrakte kanë kuptim vetëm nëse gjuha e programimit mbështet trashëgiminë (aftësia për të krijuar nënklasa nga zgjerimi i një klase). Klasat abstrakte zakonisht përfaqësojnë një koncept ose entitet abstrakt me zbatim të pjesshëm ose aspak. Prandaj, klasat abstrakte veprojnë si klasa prind nga të cilat rrjedhin klasat fëmijë, kështu që klasa e fëmijës do të ndajë tiparet jo të plota të klasës prind dhe funksionaliteti mund të shtohet për t'i plotësuar ato. Klasat abstrakte mund të përmbajnë metoda abstrakte. Nënklasat që zgjerojnë një klasë abstrakte mund të zbatojnë këto metoda abstrakte (të trashëguara). Nëse klasa fëmijë zbaton të gjitha këto metoda Abstrakte, ajo është një klasë konkrete. Por nëse nuk ndodh, klasa e fëmijëve gjithashtu bëhet një klasë Abstrakte. E gjithë kjo do të thotë se, kur programuesi emëron një klasë si Abstrakt, ajo thotë se klasa do të jetë e paplotë dhe do të ketë elementë që duhet të plotësohen nga nënklasat trashëguese. Kjo është një mënyrë e mirë për të krijuar një kontratë midis dy programuesve, e cila thjeshton detyrat në zhvillimin e softuerit. Programuesi, i cili shkruan kodin për të trashëguar, duhet të ndjekë saktësisht përkufizimet e metodës (por sigurisht që mund të ketë zbatimin e tij). Në Java dhe C, klasat dhe metodat abstrakte deklarohen duke përdorur fjalën kyçe Abstract.

Virtual

Metodat/funksionet virtuale ofrojnë aftësinë për të anashkaluar opsionalisht sjelljen e saj nga një klasë trashëguese (duke përdorur një funksion me të njëjtin nënshkrim). Koncepti i funksionit virtual është i rëndësishëm në skenarin e mëposhtëm. Supozoni se një klasë rrjedh nga një klasë fëmijë, atëherë sa herë që përdoret një objekt i klasës së derivuar, ai mund t'i referohet një objekti të klasës bazë ose klasës së derivuar. Por, sjellja e thirrjes së metodës mund të jetë e paqartë nëse metodat e klasës bazë anashkalohen. Pra, për të zgjidhur këtë paqartësi, përdoret fjala kyçe virtuale. Nëse metoda shënohet Virtual, atëherë thirret funksioni i klasës së derivuar (nëse ka) ose përndryshe thirret funksioni i klasës bazë. Për shembull, në C++, fjala kyçe virtuale përdoret pikërisht për këtë qëllim. Në C, fjala kyçe Virtual përdoret në një mënyrë të ngjashme, por përveç kësaj, duhet të përdoret fjala kyçe "override" për të modifikuar të gjitha metodat e anashkaluara. Por në Java, nuk ka asnjë fjalë kyçe të qartë Virtuale. Të gjitha metodat jostatike konsiderohen virtuale. Funksionet virtuale pa trup quhen funksione virtuale të pastra. Në Java dhe C, metodat abstrakte janë në fakt Pure Virtuale.

Dallimi midis virtuales dhe abstraktit

Megjithëse Abstrakt dhe Virtual janë dy fjalë/koncepte kyçe që ofrojnë një kuptim të zbatimit jo të plotë për entitetet e lidhura me të, ato kanë dallimet e tyre. Metodat abstrakte (që duhet të përcaktohen brenda klasave Abstract) nuk kanë fare një zbatim, ndërsa metodat virtuale mund të kenë një zbatim. Nëse metodat abstrakte zgjerohen nga një klasë konkrete, të gjitha metodat Abstrakte të trashëguara duhet të zbatohen, ndërsa metodat e trashëguara Virtuale mund ose nuk mund të anashkalohen.

Recommended: