C # Анотація проти інтерфейсу - Дізнайтеся про найважливіші відмінності

Зміст:

Anonim

Відмінності між C # Анотація та інтерфейс

Абстрактний клас та інтерфейс є дуже важливими методологіями для розуміння будь-якого об'єктно-орієнтованого навчання програмуванню. Зазвичай обидва дуже заплутані для початкового запуску учня з об'єктно-орієнтованого програмування. Якщо ми визначимо один абстрактний клас, але нічого не реалізуємо, він абсолютно схожий на інтерфейс, ніхто не зможе зрозуміти різницю між ними, а не декларацією. Однак між класом «Інтерфейс» та «Анотація» існує багато відмінностей та подібностей.

Абстрактний клас - простий клас, який визначається як абстрактний і його неможливо встановити. Абстрактний клас повинен бути розширений деякими підкласами для використання всіх функцій або корисності цього конкретного надкласу або абстрактного класу. Це фактично допомагає підтримувати належну ієрархію надкласів або підкласів. Кілька підкласів можуть використовувати одне найменування функціональності з різними визначеннями. Це фактично гарантує, що додаток має відповідати певній ієрархії або стандартам, які забезпечують належне пояснення функціональності додатку.

Інтерфейс абсолютно не клас, він так само, як і Entity, який визначається одним конкретним словом Interface. Інтерфейс ніколи не визначав жодне визначення, він повністю залежить від конкретного оголошення, яке має успадковуватись декількома класами одночасно. Кілька класів можуть визначати множинне визначення цього окремого оголошення одного певного інтерфейсу. Він також містить такий самий інструмент, як клас Абстракція, він в основному допомагає підтримувати одну і ту ж ієрархію підкласів з іншим визначенням. Але основна відмінність між абстрактним класом та інтерфейсом розширена з декількох абстрактних класів неможливо, тоді як можливе успадкування декількох інтерфейсів. Оскільки C # не підтримує декілька спадкових даних, то такий же функціонал забезпечує інтерфейс.

Порівняння «голова до голови» між C # Анотацією та Інтерфейсом (Інфографіка)

Нижче наведено найкращі порівняння між інтерфейсом C # Abstract та інтерфейсом

Ключові відмінності між C # Анотацією та інтерфейсом

Нижче пояснено деякі ключові відмінності між інтерфейсом C # Анотація та Інтернетом

  1. Абстрактний клас та інтерфейс фактично використовуються одним або багатьма підкласами. Основне обмеження - один підклас не може розширити декілька абстрактних класів, значить, множинне успадкування не може бути можливим, тоді як підклас може успадковувати кілька інтерфейсів одночасно.
  2. Реферат може містити тіло з визначенням або лише визначенням методу. Підклас, який поширює цей абстрактний клас, може використовувати метод body, а також може пояснити деталі тіла будь-якого конкретного визначення абстрактного методу, який може бути перекритий. Абстрактний клас повинен мати хоча б один абстрактний метод (означає єдине визначення методу без тіла). Інтерфейс має лише визначення методу, він не повинен містити будь-яких деталей тіла методу defini. Один спадок підкласу, який інтерфейсує та використовує ті, які не визначають метод, динамічно задаючи належні деталі тіла для кількох підкласів.
  3. Абстрактний клас може мати різні модифікатори доступу, як-от публічний, приватний чи захищений, тому будь-який метод або властивості всередині абстрактного класу можуть визначати різні модифікатори доступу. Якщо Інтерфейс не може надати жодний модифікатор доступу, тому всі властивості або методи, визначені всередині інтерфейсу, повинні бути модифікатором загального доступу, не має можливості визначати інший модифікатор доступу всередині інтерфейсу.
  4. Концепція надкласового та підкласового рівнів ідеально підходить для абстрактного класу. Абстрактному класу можна надати основну ідентичність підкласу, він, як правило, містить подібний тип об'єкта цього конкретного підкласу. Тоді як інтерфейс зазвичай визначає один конкретний тип периферійної активності класу. Припустимо, у нас одне ім’я інтерфейсу - Moveable, тепер цей інтерфейс може бути успадкований як автомобілем, так і людьми. Тоді як автомобілі та люди є абсолютно різним предметом класу і не мають між собою жодних стосунків.
  5. Якщо програма має різну реалізацію, але активність цієї конкретної реалізації майже однакова, тоді краще використовувати клас Анотація, де ви можете визначити цю конкретну логіку, і всі підкласи можуть легко отримувати доступ до однієї і тієї ж логіки кожен раз. Як приклад підключення до бази даних, яку зазвичай використовують усі підкласи, тому, якщо це генерування та закриття коду зв'язку може містити абстрактний клас, то будь-якому підкласу буде дуже легко отримати доступ до одного і того ж. Якщо кілька реалізацій хочуть ділитися лише підписом методу, то інтерфейс завжди кращий.

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

Далі наведена таблиця порівняння між інтерфейсом C # Анотація та Інтернетом

ОСНОВА ДЛЯ

ПОРІВНЯЙТЕ

Анотація класуІнтерфейс
Множинне спадкуванняОдин підклас може розширювати лише один абстрактний клас, не кратний.Один підклас може реалізувати декілька інтерфейсів, які допомагають відновити не підтримуючи функцію множинного успадкування C #.
Визначення класуІнтерфейс ніколи не визначає будь-який конкретний фрагмент визначення, він просто містить визначення, яке належним чином реалізовано підкласом.Анотація може містити все тіло з визначенням, а також може містити єдине визначення, наприклад інтерфейс, який може бути замінений будь-якими підкласами. Будь-який абстрактний клас повинен мати хоча б один абстрактний метод, який містить лише деталі визначення, тіло буде описано пізніше в підкласі.
Модифікатор доступуІнтерфейс ніколи не має модифікатора доступу у своєму визначенні. Інтерфейс зазвичай розглядає всі властивості як загальнодоступні.Абстрактний клас може мати модифікатор доступу для його визначення. Отже всі об'єкти нерухомості можуть бути державними, приватними або захищеними.
ПродуктивністьЗазвичай потрібно трохи більше часу, щоб з'ясувати відповідний метод підкласу.Це трохи швидше, ніж інтерфейс.

Висновок

І інтерфейс, і клас "Анотація" в основному використовуються для інтелектуального управління кількома реалізаціями, щоб легко уникнути зайвого коду, і все в належній ієрархії та структурі. Інтерфейс завжди буде кращим для спільного використання одного і того ж підпису в декількох випадках. Припустимо, у Pantaloons є одна основна гілка, і вона також має кілька гілок в іншому місці. Тепер один конкретний продукт може запускатись у певному місці з одним підходом, тоді як в іншому місці він запускається в іншому підході. У такому випадку логіка, яка повинна відрізнятися для одного і того ж продукту в декількох місцях, ця логіка може краще керуватися інтерфейсом. Тепер для того ж продукту можуть бути деякі загальні характеристики, які потрібно висвітлити в кожній галузі на момент запуску цього продукту. У такому випадку, щоб уникнути надмірності коду, додайте ту саму логіку в абстрактний клас і використовуйте її в декількох реалізаціях в різних галузях.

Рекомендована стаття

Це був корисний посібник щодо відмінностей між C # Анотацією та Інтерфейсом. Тут ми обговорюємо порівняння головою до голови, ключову різницю разом з інфографікою. Ви також можете переглянути наступну статтю, щоб дізнатися більше -

  1. C # Інтерфейс проти абстрактного класу
  2. Інтерфейс Java проти абстрактного класу
  3. Інтерфейс машинопису проти класу
  4. Тип TypeScript та інтерфейс
  5. Доступ до модифікаторів у PHP
  6. Анотація класи в JavaScript