Pagkakaiba sa Pagitan ng Virtual at Abstract

Pagkakaiba sa Pagitan ng Virtual at Abstract
Pagkakaiba sa Pagitan ng Virtual at Abstract

Video: Pagkakaiba sa Pagitan ng Virtual at Abstract

Video: Pagkakaiba sa Pagitan ng Virtual at Abstract
Video: Solusyon sa Tagas at Crack ng pader | Step by step Waterproofing Application 2024, Hulyo
Anonim

Virtual vs Abstract

Ang Virtual at Abstract ay dalawang keyword na ginagamit sa karamihan ng mga Object Oriented (OO) programming language gaya ng Java at C. Bagama't may kaunting pagkakaiba sa kung ano ang ibig sabihin nito sa iba't ibang wika, parehong Virtual at Abstract na mga keyword ay nagbibigay ng pakiramdam ng bahagyang pagpapatupad sa mga entity kung saan ito nakakabit.

Abstract

Karaniwan, ang mga Abstract na klase, na kilala rin bilang Abstract Base Classes (ABC), ay hindi maaaring i-instantiate (isang instance ng klase na iyon ay hindi maaaring gawin). Kaya, ang mga Abstract na klase ay makabuluhan lamang kung ang programming language ay sumusuporta sa mana (kakayahang lumikha ng mga subclass mula sa pagpapalawak ng isang klase). Ang mga abstract na klase ay karaniwang kumakatawan sa isang abstract na konsepto o entity na may bahagyang o walang pagpapatupad. Samakatuwid, ang mga Abstract na klase ay kumikilos bilang mga parent class kung saan nagmula ang mga child class, upang ang child class ay magbahagi ng mga hindi kumpletong feature ng parent class at maidagdag ang functionality para makumpleto ang mga ito. Ang mga abstract na klase ay maaaring maglaman ng mga Abstract na pamamaraan. Ang mga subclass na nagpapalawak ng abstract na klase ay maaaring magpatupad ng mga (minana) na pamamaraang Abstract na ito. Kung ang klase ng bata ay nagpapatupad ng lahat ng mga pamamaraang Abstract, ito ay isang kongkretong klase. Ngunit kung hindi, ang klase ng bata ay magiging isang Abstract na klase. Ang ibig sabihin ng lahat ng ito ay, kapag ang programmer ay nag-nominate ng isang klase bilang isang Abstract, sinasabi niya na ang klase ay hindi kumpleto at magkakaroon ito ng mga elemento na kailangang kumpletuhin ng mga namamanang subclass. Ito ay isang magandang paraan upang lumikha ng isang kontrata sa pagitan ng dalawang programmer, na pinapasimple ang mga gawain sa pagbuo ng software. Ang programmer, na nagsusulat ng code upang magmana, ay kailangang sundin nang eksakto ang mga kahulugan ng pamamaraan (ngunit siyempre ay maaaring magkaroon ng kanyang sariling pagpapatupad). Sa Java at C, ang mga Abstract na klase at pamamaraan ay idineklara gamit ang Abstract na keyword.

Virtual

Ang mga virtual na pamamaraan/function ay nagbibigay ng kakayahang opsyonal na i-override ang gawi nito sa pamamagitan ng isang inheriting class (gamit ang isang function na may parehong lagda). Ang konsepto ng Virtual function ay mahalaga sa sumusunod na senaryo. Ipagpalagay na ang isang klase ay hinango ng isang klase ng bata, at kapag ang isang bagay ng nagmula na klase ay ginagamit, ito ay maaaring tumukoy sa isang bagay ng batayang klase o ang hinangong klase. Ngunit, ang pag-uugali ng method call ay maaaring maging malabo kung ang mga pamamaraan ng base class ay na-override. Kaya, upang malutas ang kalabuan na ito, ginamit ang Virtual na keyword. Kung ang pamamaraan ay minarkahan ng Virtual, kung gayon ang function ng nagmula na klase ay tatawagin (kung mayroon man) o kung hindi man ay tinatawag ang function ng base class. Halimbawa, sa C++, ang Virtual na keyword ay eksaktong ginagamit para sa layuning ito. Sa C, ang Virtual na keyword ay ginagamit sa katulad na paraan, ngunit bilang karagdagan, ang pag-override ng keyword ay dapat gamitin upang baguhin ang lahat ng na-override na pamamaraan. Ngunit sa Java, walang tahasang Virtual na keyword. Ang lahat ng mga non-static na pamamaraan ay itinuturing na Virtual. Ang mga virtual na function na walang katawan ay tinatawag na Pure Virtual function. Sa Java at C, ang mga abstract na pamamaraan ay sa katunayan Purong Virtual.

Pagkakaiba sa pagitan ng Virtual at Abstract

Bagaman ang Abstract at Virtual ay dalawang keyword/konsepto na nagbibigay ng kahulugan ng hindi kumpletong pagpapatupad sa mga nauugnay na entity nito, mayroon silang mga pagkakaiba. Ang mga abstract na pamamaraan (na dapat tukuyin sa loob ng mga klase ng Abstract) ay walang pagpapatupad, habang ang mga Virtual na pamamaraan ay maaaring may pagpapatupad. Kung ang mga paraan ng Abstract ay pinalawig ng isang kongkretong klase, dapat ipatupad ang lahat ng minanang pamamaraan ng Abstract, habang ang mga minanang pamamaraan ng Virtual ay maaaring ma-override o hindi.

Inirerekumendang: