C # Анотация срещу интерфейс - Научете най-важните разлики

Съдържание:

Anonim

Разлики между А # Абстрактен спрямо интерфейс

Абстрактен клас и интерфейс са много важни методологии, които да научите за разбиране на всяко обектно-ориентирано обучение по програмиране. Обикновено и двете са много объркващи за първоначалния старт на учащия по обектно-ориентирано програмиране. Ако дефинираме един абстрактен клас, но не реализираме нищо, то абсолютно изглежда като интерфейс, никой няма да може да разбере разлика между тях, а не декларация. Въпреки това, има много разлики и прилики между интерфейс и абстрактен клас.

Абстрактният клас е прост клас, който се определя като абстрактен и не може да бъде инстанциран. Абстрактен клас трябва да бъде разширен от някои подкласове, за да се използват всички функции или полезност на този специфичен суперклас или абстрактен клас. Всъщност помага да се поддържа правилната йерархия на суперкласовете или подкласовете. Множество подкласове могат да използват едно и също име на функционалност с различни дефиниции. Всъщност гарантира, че приложението трябва да следва някаква специфична йерархия или стандарти, които осигуряват правилно обяснима функционалност на приложението.

Интерфейсът абсолютно не е клас, той просто като Entity, който е определен от една конкретна дума Interface. Интерфейсът никога не е дефинирал никаква дефиниция, той изцяло зависи от конкретна декларация, която трябва да наследи едновременно от няколко класа. Множеството класове могат да дефинират множество дефиниции на тази отделна декларация на един конкретен интерфейс. Освен това притежава същия вид съоръжение като абстрактния клас, той основно помага да се поддържа една и съща йерархия на подкласовете с различна дефиниция. Но основната разлика между абстрактния клас и интерфейса е разширена от множество абстрактни класове, не е възможно, докато е възможно наследяването на множество интерфейси. Както C # не поддържа множество наследства, така и същият вид функционалност осигурява интерфейсът.

Сравнение между главата на C # Абстрактен и Интерфейс (Инфографика)

По-долу са най-добрите сравнения между C # Abstract и интерфейс

Ключови разлики между C # Абстракт от интерфейс

Някои ключови разлики са обяснени по-долу между C # Abstrakt спрямо интерфейса

  1. Абстрактен клас и интерфейс и двете действително се използват от един или много подкласове. Основното ограничение е, че един подклас не може да разшири множество абстрактни класове означава, че множество наследявания не могат да бъдат възможни, докато подкласът може да наследи няколко интерфейса еднократно.
  2. Резюмето може да държи тялото с дефиниция или само с определение на метод. Подклас, който разширява този абстрактен клас, може да се използва с метод на тялото, а също така може да обясни подробности за тялото на всяка конкретна дефиниция на абстрактния метод, която може да бъде отменена. Абстрактният клас трябва да има поне един абстрактен метод (означава единственото определение на метода без тяло). Интерфейсът има само определението на метода, той не трябва да съдържа никакви подробности за тялото на метода на определяне. Едно наследяване на подклас, което интерфейс и използване на тези, които не дефинират метода, чрез динамично задаване на правилни данни за тялото за множество подкласове.
  3. Абстрактният клас може да има различни модификатори на достъп като публичен, частен или защитен, така че всеки метод или свойства вътре в абстрактния клас могат да определят различни модификатори на достъп. Докато Интерфейсът не може да даде модификатор на достъп, така че всички свойства или методи, дефинирани вътре в интерфейса, трябва да бъдат модификатор за обществен достъп, не разполагат с възможност да дефинират друг модификатор на достъп вътре в интерфейса.
  4. Концепцията за суперклас и подклас е точно идеална за абстрактния клас. Абстрактен клас може да получи основната идентичност на подклас, той обикновено притежава подобен тип обект на този специфичен подклас. Като има предвид, че интерфейсът обикновено дефинира един специфичен тип периферна активност на клас. Да предположим, че имаме едно име на интерфейса е Moveable, сега този интерфейс може да бъде наследен и от кола, и от човек. Докато и автомобилите, и хората са изцяло различен клас обект и не поддържат никакви отношения помежду си.
  5. Ако приложението има различни приложения, но активността на тази конкретна реализация е почти еднаква, тогава по-добре да използвате клас Абстракт, където можете да определите тази специфична логика и всички подклас могат лесно да имат достъп до една и съща логика всеки път. Като пример за свързване с база данни, която обикновено се използва от всички подкласове, така че ако това генериране и затварящ код за свързване може да съдържа абстрактен клас, тогава ще бъде много лесно всеки подклас да получи същия. Докато множество реализации искат да споделят само подписа на метода, тогава интерфейсът винаги е по-добър.

Таблица за сравнение C # Анотация срещу интерфейс

Следва таблицата за сравнение между интерфейс C # Abstrakt спрямо интерфейс

ОСНОВА ЗА

СРАВНЕНИЕ

Абстрактен класинтерфейс
Множество наследяватЕдин подклас може да може да разшири само един абстрактен клас, а не множествен.Един подклас може да може да реализира множество интерфейси, които помагат да се възстанови, като не поддържа функция за множествено наследяване на C #.
Определение на класаИнтерфейсът никога не дефинира конкретно тяло на дефиницията, той просто съдържа дефиницията, реализирана правилно от подкласа по-късно.Резюмето може да побере цялото тяло с дефиниция, а също така може да съдържа единственото определение като интерфейс, който може да бъде отменен от всички подкласове. Всеки абстрактен клас трябва да има поне един абстрактен метод, който съдържа само детайли на дефиницията, тялото ще бъде описано по-късно в подклас.
Модификатор на достъпИнтерфейсът никога няма модификатор на достъп в своето определение. Интерфейсът обикновено счита всички имоти за публични.Абстрактен клас може да има модификатор на достъп за неговото определение. Така че всички имоти могат да бъдат обществени, частни или защитени.
производителностОбикновено отнема малко повече време, за да разберете съответния метод на подклас.Той е малко по-бърз от интерфейса.

заключение

Интерфейсът и класът Abstrakt се използват главно за интелигентно управление на множество реализации, така че излишният код може лесно да бъде избегнат и всичко да е в правилна йерархия и структура. Интерфейсът винаги ще бъде по-добър за споделяне на един и същ подпис в множество случаи. Да предположим, че Pantaloons имат един основен клон и той също има няколко клона на различно място. Сега един конкретен продукт може да стартира на конкретно място с един подход, докато на друго място стартира при различен подход. В този случай логиката, ако е различна за един и същ продукт на няколко места, този вид логика може по-добре да се управлява от интерфейса. Сега за един и същ продукт може да има някои общи характеристики, които трябва да бъдат подчертани във всеки клон по време на пускането на този продукт. В този случай, за да избегнете излишък на код, добавете същата логика в абстрактния клас и можете да използвате в множество реализации в различни клонове.

Препоръчителен член

Това беше полезно ръководство за разликите между C # Abstrakt спрямо интерфейса, тук ние обсъждаме сравнение между главата, ключова разлика, заедно с инфографиката. Можете също да разгледате следната статия, за да научите повече -

  1. C # интерфейс срещу абстрактен клас
  2. Java интерфейс срещу абстрактен клас
  3. Интерфейс на Typescript спрямо клас
  4. TypeScript Тип срещу интерфейс
  5. Достъп Модификатори в PHP
  6. Абстрактни класове в JavaScript