Кључна разлика: Апстрактне методе су методе које су декларисане, али немају имплементацију. За имплементацију полиморфизма заснованог на типу користе се виртуалне методе. Изведена класа има флексибилност да ре-имплементира виртуелну методу основне класе помоћу кључне речи 'оверриде'.
На пример -
публиц абстрацт цласс екамплеАбстрацтЦласс
{
публиц абстрацт воид екамплеабстрацтМетход ();
публиц виртуал воид нонАбстрацтМетход ()
{
Цонсоле.ВритеЛине ("Имплементација је дефинисана у методи");
}
цласс нормалНонАбстрацтЦласс: екамплеАбстрацтЦласс
{
публиц оверриде воид екамплеабстрацтМетход ()
{
Цонсоле.ВритеЛине ("Надјачавање екамплеабстрацтМетход класе екамплеАбстрацтЦласс");
}
}
цласс Басе
{
јавни виртуални воид тест ()
{
Цонсоле.ВритеЛине ("Басе.Тест");
}
}
цласс Деривед: Басе
{
публиц оверриде воид Тест ()
{
Цонсоле.ВритеЛине ("Деривед.Тест");
}
}
За имплементацију полиморфизма заснованог на типу користе се виртуалне методе. Изведена класа има флексибилност да ре-имплементира виртуелну методу основне класе помоћу кључне речи надјачавања. И виртуелни и апстрактни не могу се користити заједно са статичким или виртуелним или надјачавајућим модификаторима.
Поређење између виртуелне и апстрактне методе:
Виртуална метода | Абстрацт Метход | |
Дефиниција | За имплементацију полиморфизма заснованог на типу користе се виртуалне методе. | Апстрактне методе су методе које се декларишу, али немају имплементацију. |
Имплементација | Да, може имати имплементацију | Не, не може имати никакву имплементацију |
Треба да се поништи | Није обавезно | Обавезно |
Кључна реч која се користи за разликовање од других типова метода | Виртуал | Апстрактан |
Класа | Виртуална метода која садржи класу може бити инстанцирана. | Класа која садржи апстрактну методу не може се инстанцирати. Може се само наслиједити. |
Обим | Обим виртуелне методе само за чланове. | Обим апстрактне методе за чланове и класе. |
Метод који ће се извршити (тип класе објектне базе) | Матична имплементација ће бити позвана само у случају када у конкретној класи није предвиђена имплементација. | Цонцрете имплементатион |
Метод који се изводи (објект-бетонски тип класе) | Цонцрете имплементатион | Цонцрете имплементатион |