Різниця між абстрактним класом та інтерфейсом у C #

Анотація класу

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

Приклад абстрактного класу в C #:
Як показано у наведеному вище прикладі, абстрактний метод 'Площа' всередині класу MyCircle перевизначається у похідному класі MyArea.

Інтерфейс

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

Приклад інтерфейсу в C #:
Як показано у наведеному вище прикладі, інтерфейс MyData має два способи декларації getdata () та showdata (). Клас NameData, який реалізує цей інтерфейс, повинен дати визначення методів, оголошених в інтерфейсі MyData.

Різниця між абстрактним класом та інтерфейсом

  1. Абстрактний клас може мати як абстрактні, так і не абстрактні члени. Але в інтерфейсі всі члени неявно абстрактні і повинні бути переосмислені у похідному класі.
  2. Клас може успадкувати кілька інтерфейсів, але лише один абстрактний клас.
  3. Абстрактний клас може містити методи з або з визначенням. Але інтерфейс може містити лише підпис методу.
  4. Абстрактний клас може повністю, частково або взагалі не реалізуватися, але інтерфейс повинен бути повністю реалізований, тобто всі члени повинні бути визначені у похідному класі.
  5. Інтерфейс не може містити модифікаторів доступу, але абстрактний клас може мати його для функцій, властивостей або подій.