Інтерфейсом називається сімейство методів і властивостей, які згруповані в єдине ціле і інкапсулюють яку-небудь певну функціональну можливість
Іншими словами, інтерфейс тип, який визначає набір методів і властивостей без реалізації, і який використовується для визначення класів з подібною функціональністю.
Після того як інтерфейс визначений, його можна реалізувати в деякому класі. Це означає, що клас буде підтримувати всі властивості і члени, які обумовлені даним інтерфейсом
Інтерфейси не можуть існувати самі по собі.
Ми не можемо створити екземпляр інтерфейсу таким же чином, як ми створюємо екземпляр класу. Крім того, інтерфейс не може містити в собі ніякого коду, який би реалізував його члени; він просто описує ці члени. Їх реалізація повинна перебувати в класах, у яких реалізований даний інтерфейс
У класу може бути кілька інтерфейсів, і кілька класів можуть підтримувати той самий інтерфейс. За допомогою інтерфейсів можна включити поведінку з декількох джерел в класі. Ця можливість важлива в C#, оскільки мова не підтримує множинне спадкування класів.
interface інтерфейс { тип метод(аргументи); тип властивість { get; set;} }
Тобто інтерфейси оголошуються схожим на класи способом, тільки замість ключового слова class використовується ключове слово interface. Наприклад:
interface Imylnterface { // члени інтерфейсу }
Ключові слова для модифікації доступу public і internal використовуються точно так же. Всі методи інтерфейсу за визначенням є відкритими, при цьому заборонено використовувати у визначенні методів модифікатори доступу. Для того, щоб зробити інтерфейс загальнодоступним, слід використовувати ключове слово public:
public interface Imylnterface { // члени інтерфейсу }
Тип інтерфейсу можна використовувати в оголошенні параметрів методів і змінних, але створювати об'єкти типу інтерфейс не можна. Фактично це ті ж самі абстрактні класи, що не містять оголошень даних-членів і оголошень звичайних функцій. Усе без винятку функції — члени інтерфейсу – абстрактні
В інтерфейсі не можна повідомляти поля, але можна повідомляти властивості. Властивості не описуються повністю, а тільки декларуються
interface потомок: батько {}
Створимо інтерфейс Ifigure, від якого робимо два класи - Сircle (клас окружність) і Triangle (трикутника).
Відпрацьовування
Існує фонд допомоги дитячим установам, для кожного типу свій.Виписується матеріальний зміст на кожну дитину.
Для дитячого садка обсяг умісту фонду ділиться на кількість дітей.Для дитячого будинку обсяг умісту фонду плюс спонсорські пожертвування ділиться на кількість вихованців дитячого будинку.
Створимо інтерфейс Istat із властивістю розмір фонду і методами обчислення матдопомоги одній дитині і видачі інформації про цю операцію.
Створимо два класи - Kindergarten(клас дитячий садок), який реалізує цей інтерфейс, і Orphanage( дитячий будинок)з додатковим полем обсяг спонсорської допомоги, який є дочірнім від Kindergarten.
Відпрацьовування
Реалізуємо цей же проект, використовуючи інтерфейси.
Створимо клас Point, що містить координати центру.
Створимо інтерфейс Ishape, який будуть реалізувати два класи - Circle (клас окружностей) і Square (клас квадратів).
Відпрацьовування