Видео: Разлика между виртуална и абстрактна
2024 Автор: Mildred Bawerman | [email protected]. Последно модифициран: 2023-12-16 08:37
Виртуално срещу абстрактно
Virtual и Abstract са две ключови думи, използвани в повечето обектно-ориентирани (OO) програмни езици като Java и C #. Въпреки че има малки разлики в това, което означава в различните езици, както виртуалните, така и абстрактните ключови думи създават усещане за частично изпълнение на обектите, към които се прикрепя.
Резюме
Обикновено абстрактните класове, известни също като абстрактни базови класове (ABC), не могат да бъдат създадени (екземпляр на този клас не може да бъде създаден). И така, абстрактните класове имат смисъл само ако езикът за програмиране поддържа наследяване (възможност за създаване на подкласове от разширяване на клас). Абстрактните класове обикновено представляват абстрактна концепция или обект с частично или без изпълнение. Следователно абстрактните класове действат като родителски класове, от които са получени дъщерни класове, така че дъщерният клас ще споделя непълните характеристики на родителския клас и функционалността може да бъде добавена, за да ги завърши. Абстрактните класове могат да съдържат абстрактни методи. Подкласовете, разширяващи абстрактния клас, могат да внедрят тези (наследени) абстрактни методи. Ако класът дете изпълнява всички подобни абстрактни методи, това е конкретен клас. Но ако не стане,класът дете също става абстрактен клас. Всичко това означава, че когато програмистът номинира клас като Резюме, тя казва, че класът ще бъде непълен и ще има елементи, които трябва да бъдат завършени от наследствените подкласове. Това е хубав начин за създаване на договор между двама програмисти, което опростява задачите при разработването на софтуер. Програмистът, който пише код за наследяване, трябва да следва точно дефинициите на метода (но разбира се може да има собствена реализация). В Java и C # абстрактните класове и методи се декларират с помощта на ключовата дума Abstract. Това е добър начин за създаване на договор между двама програмисти, което опростява задачите при разработването на софтуер. Програмистът, който пише код за наследяване, трябва да следва точно дефинициите на метода (но разбира се може да има собствена реализация). В Java и C # абстрактните класове и методи се декларират с помощта на ключовата дума Abstract. Това е добър начин за създаване на договор между двама програмисти, което опростява задачите при разработването на софтуер. Програмистът, който пише код за наследяване, трябва да следва точно дефинициите на метода (но разбира се може да има собствена реализация). В Java и C # абстрактните класове и методи се декларират с помощта на ключовата дума Abstract.
Виртуален
Виртуалните методи / функции предоставят възможността по избор да отменят поведението си чрез клас наследник (използвайки функция със същия подпис). Концепцията за виртуална функция е важна в следващия сценарий. Да предположим, че клас е извлечен от дъщерен клас, след което всеки път, когато се използва обект от извлечения клас, той може да се позовава на обект от базовия клас или производния клас. Но поведението на извикването на метод може да бъде двусмислено, ако методите на базовия клас бъдат заменени. Така че, за да се разреши тази неяснота, се използва Virtual ключова дума. Ако методът е означен като Виртуален, тогава се извиква функцията на производния клас (ако има такава) или се извиква функцията на основния клас. Например, в C ++, Virtual ключовата дума се използва точно за тази цел. В C # ключовата дума Virtual се използва по подобен начин, но освен това,ключовата дума замяна трябва да се използва за промяна на всички заменени методи. Но в Java няма явна виртуална ключова дума. Всички нестатични методи се считат за виртуални. Виртуални функции без тяло се наричат чисти виртуални функции. В Java и C # абстрактните методи всъщност са чисто виртуални.
Разлика между виртуална и абстрактна
Въпреки че Abstract и Virtual са две ключови думи / концепции, които осигуряват смисъл на непълно изпълнение на свързаните с тях обекти, те имат своите различия. Абстрактните методи (които трябва да бъдат дефинирани в абстрактните класове) изобщо нямат реализация, докато виртуалните методи могат да имат реализация. Ако абстрактните методи се разширяват от конкретен клас, всички наследени абстрактни методи трябва да бъдат внедрени, докато наследените виртуални методи могат или не могат да бъдат заменени.
Препоръчано:
Разлика между ЕМП и потенциална разлика
EMF срещу потенциална разлика (електромоторна сила) се използват за описване на два различни параметъра между две точки. Терминът „потенциална разлика“е ге
Разлика между фазовата разлика и разликата в пътя
Фазова разлика спрямо разликата в пътя Разликата във фазата и разликата в пътя са две много важни концепции в оптиката. Тези явления се наблюдават по проблемите на
Разлика между потенциалната разлика и напрежението
Потенциална разлика спрямо напрежение Потенциалната разлика и напрежението са два термина, използвани в инженерството, за да опишат разлика в потенциала в две точки
Разлика между виртуална машина и сървър
Основна разлика - виртуална машина срещу сървър Компютърът е устройство, което може да изпълнява задачи в съответствие с дадените инструкции. Компютърът съдържа multipl
Разлика между ключовата разлика между металните и неметалните минерали
Ключова разлика - метални срещу неметални минерали Минералът е естествено срещаща се твърда и неорганична съставка с определена химическа формула и