Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Інтерфейси

План

1 Інтерфейси

2 Оголошення інтерфейсів

3 Реалізація інтерфейсу

4 Застосування інтерфейсів

 

Концепція абстрактних методів дозволяє запропонувати альтернативу множинному спадкуванню. В Java клас може мати тільки одного батька, оскільки при множинному спадкуванні можуть виникати конфлікти, які заплутують об'єктну модель. Наприклад, якщо в класу є два батьки, які мають однаковий метод з різною реалізацією, то який з них успадкує новий клас? І яка буде функціональність батьківського класу, що втратився свого методу?

Всі ці проблеми не виникають у тому випадку, якщо успадковуються тільки абстрактні методи від декількох батьків. Навіть якщо успадковано кілька однакових методів, однаково в них немає реалізації й можна один раз описати тіло методу, що буде використовуватися при виклику кожного із цих методів.

Саме так улаштовані інтерфейси в Java. Від них не можна породжувати об'єкти, але інші класи можуть реалізовувати їх.

2 Оголошення інтерфейсів

Оголошення інтерфейсів дуже схоже на спрощене оголошення класів.

Воно починається із заголовка. Спочатку вказуються модифікатори. Інтерфейс може бути оголошений як public і тоді він буде доступний для загального використання, або модифікатор доступу може не вказуватися, у цьому випадку інтерфейс доступний тільки для типів свого пакета. Модифікатор abstract для інтерфейсу не потрібно, оскільки всі інтерфейси є абстрактними.Далі записується ключове слово interface й ім'я інтерфейсу.

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

Потім у фігурних дужках записується тіло інтерфейсу.

 

public interface Drawable extends Colorable,

Resizable {

}

 

Тіло інтерфейсу складається з оголошення елементів, тобто полів-констант і абстрактних методів. Всі поля інтерфейсу повинні бути public final static, тому ці модифікатори вказувати необов'язково й навіть небажано, щоб не ускладнювати код.

 

public interface Directions {

int RIGHT=1;

int LEFT=2;

int UP=3;

int DOWN=4;

}

 

Всі методи інтерфейсу є public abstract і ці модифікатори також необов'язкові.

3 Реалізація інтерфейсу

Кожний клас може реалізовувати будь-які доступні інтерфейси. При цьому в класі повинні бути реалізовані всі абстрактні методи, що з'явилися при спадкуванні від інтерфейсів або батьківського класу, щоб новий клас міг бути оголошений неабстрактним.

Якщо з різних джерел успадковуються методи з однаковою сигнатурою, то досить один раз описати реалізацію й вона буде застосовуватися для всіх цих методів. Однак якщо в них різне повертати^ся значение, що, то виникає конфлікт:

Отже, якщо ім'я інтерфейсу зазначене після implements в оголошенні класу, то клас реалізує цей інтерфейс. Спадкоємці даного класу також реалізують інтерфейс, оскільки їм дістаються в спадщину його елементи.

 

4 Застосування інтерфейсів

Дотепер інтерфейси розглядалися з технічної точки зору - як їх повідомляти, які конфлікти можуть виникати. Однак важливо розуміти, як застосовуються інтерфейси з концептуальної точки зору.

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


 


Читайте також:

  1. WEB-документи та CGI-інтерфейси
  2. Внутрішні GSM - інтерфейси
  3. Інтерфейси
  4. Інтерфейси мікропроцесорних пристроїв і систем
  5. Поняття про протоколи, інтерфейси, стеки протоколів




Переглядів: 827

<== попередня сторінка | наступна сторінка ==>
Розмежування доступу в Java | Інтерфейс Runnable

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.017 сек.