C # Аннотация против интерфейса - Узнайте самые важные различия

Содержание:

Anonim

Различия между C # Abstract и Interface

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

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

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

Сравнение лицом к лицу между C # Abstract и Interface (Инфографика)

Ниже приведены основные сравнения между C # Abstract и Interface

Ключевые различия между C # Abstract и Interface

Ниже описаны некоторые ключевые различия между C # Abstract и Interface.

  1. Абстрактный класс и интерфейс фактически используют один или несколько подклассов. Основным ограничением является то, что один подкласс не может расширять несколько абстрактных классов, что означает невозможность множественного наследования, тогда как подкласс может наследовать несколько интерфейсов за один раз.
  2. Аннотация может содержать тело с определением или только определением метода. Подкласс, который расширяет этот абстрактный класс, может использоваться с методом body, а также может объяснять детали тела любого конкретного определения абстрактного метода, что означает возможность переопределения. Абстрактный класс должен иметь хотя бы один абстрактный метод (означает единственное определение метода без тела). Интерфейс имеет только определение метода, он не должен содержать никаких подробностей тела метода define. Одно наследование подкласса, которое взаимодействует и использует те, которые не определяют метод, динамически задает правильные данные тела для нескольких подклассов.
  3. Абстрактный класс может иметь разные модификаторы доступа, такие как public, private или protected, поэтому любой метод или свойства внутри абстрактного класса могут определять разные модификаторы доступа. В то время как Интерфейс не может предоставить какой-либо модификатор доступа, поэтому все свойства или методы, определенные внутри интерфейса, должны быть модификаторами открытого доступа, и не имеют возможности определять другой модификатор доступа внутри интерфейса.
  4. Концепция суперкласса и подкласса идеально подходит для абстрактного класса. Абстрактному классу может быть присвоен основной идентификатор подкласса, обычно он содержит объект подобного типа этого подкласса. Принимая во внимание, что Интерфейс обычно определяет один определенный тип периферийной активности класса. Предположим, у нас есть одно имя интерфейса Moveable, теперь этот интерфейс может наследоваться как машиной, так и человеком. Принимая во внимание, что автомобили и люди - совершенно разные объекты класса, и между ними нет никаких отношений.
  5. Если приложение имеет различную реализацию, но активность этой конкретной реализации почти одинакова, тогда лучше использовать класс Abstract, где вы можете определить эту конкретную логику и все подклассы могут легко обращаться к одной и той же логике каждый раз. В качестве примера подключения к базе данных, которое обычно используют все подклассы, так что если этот код создания и закрытия подключения может храниться в абстрактном классе, то для любого подкласса будет очень легко получить доступ к нему. В то время как несколько реализаций хотят использовать только сигнатуру метода, интерфейс всегда лучше.

Сравнительная таблица C # Аннотация и интерфейс

Ниже приведена сравнительная таблица между C # Аннотация и интерфейс

ОСНОВА ДЛЯ

СРАВНЕНИЕ

Абстрактный классИнтерфейс
Множественное наследованиеОдин подкласс может расширять только один абстрактный класс, но не несколько.Один подкласс может реализовать несколько интерфейсов, которые помогают восстановить не поддерживающую множественное наследование функцию C #.
Определение классаИнтерфейс никогда не определяет какой-либо конкретный текст определения, он просто содержит определение, которое позже должным образом реализовано подклассом.Аннотация может содержать все тело с определением, а также может содержать единственное определение, такое как интерфейс, которое может быть переопределено любыми подклассами. Любой абстрактный класс должен иметь хотя бы один абстрактный метод, который содержит только детали определения, тело которого будет описано позже в подклассе.
Модификатор доступаИнтерфейс никогда не имеет никакого модификатора доступа в своем определении. Интерфейс обычно рассматривает все свойства как общедоступные.Абстрактный класс может иметь модификатор доступа для своего определения. Таким образом, все свойства могут быть публичными, частными или защищенными.
ПроизводительностьОбычно требуется немного больше времени, чтобы выяснить соответствующий метод подкласса.Это немного быстрее, чем интерфейс.

Вывод

Интерфейс и абстрактный класс в основном используются для интеллектуального управления множеством реализаций, чтобы можно было легко избежать избыточного кода и все в правильной иерархии и структуре. Интерфейс всегда будет лучше использовать одну и ту же подпись в нескольких экземплярах. Предположим, что у Pantaloons есть одна основная ветвь, а также несколько ветвей в разных местах. Теперь один конкретный продукт может запускаться в определенном месте с одним подходом, тогда как в другом месте он запускается с другим подходом. В этом случае логика, которая должна отличаться для одного и того же продукта в нескольких местах, такая логика может лучше обрабатываться интерфейсом. Теперь для одного и того же продукта могут иметься некоторые общие характеристики, которые необходимо выделять в каждой отрасли во время запуска этого продукта. В этом случае, чтобы избежать избыточности кода, добавьте ту же логику в абстрактный класс и можете использовать ее в нескольких реализациях в разных ветвях.

Рекомендуемая статья

Это было полезным руководством для различий между C # Abstract и Interface, здесь мы обсудили сравнение лицом к лицу, ключевое отличие наряду с инфографикой. Вы также можете посмотреть следующую статью, чтобы узнать больше -

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