Рекомендуємо, 2024

Вибір Редакції

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

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

Приклад абстрактного класу в C #:

абстрактний клас MyCircle {абстрактний публічний int Area (); } Клас MyArea: MyCircle {public override int Area () {сторона повернення *; .....}}
1 2 3 4 5 6 7 8 9 10 11абстрактний клас MyCircle {абстрактний публічний int Area (); } Клас MyArea: MyCircle {public override int Area () {сторона повернення *; . . . . . }}

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

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

Приклад інтерфейсу в C #:

використання System.Collections.Generic; за допомогою System.Linq; за допомогою System.Text; простору імен MyName {загальний інтерфейс MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {назва рядка; Console.WriteLine ("Введіть ім'я:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Моє ім'я:", ім'я); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22за допомогою системи. Колекції. Загальний; за допомогою системи. Linq; за допомогою системи. Текст; простору імен MyName {загальний інтерфейс MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {назва рядка; Консоль. WriteLine ("Введіть ім'я:"); name = Консоль. ReadLine (); } public void showdata () {Консоль. WriteLine ("Моє ім'я:", ім'я); }}}

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

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

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