Що таке Інтерфейс у Java з прикладом

Зміст:

Anonim

Що таке інтерфейс у Java?

Інтерфейс в Java програмування визначається як абстрактний тип , який використовується для визначення поведінки класу. Інтерфейс Java містить статичні константи та абстрактні методи. Клас може реалізувати кілька інтерфейсів. У Java інтерфейси оголошуються за допомогою ключового слова interface. Усі методи в інтерфейсі є неявно загальнодоступними та абстрактними.

Синтаксис для оголошення інтерфейсу

interface {//methods}

Щоб використовувати інтерфейс у своєму класі, додайте ключове слово "реалізує" після назви вашого класу, а потім імені інтерфейсу.

Приклад реалізації інтерфейсу

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Клацніть тут, якщо відео недоступне

Чому потрібен інтерфейс?

Щоб краще зрозуміти концепцію інтерфейсу Java, давайте подивимось приклад. Клас «Медіаплеєр» має два підкласи: програвач компакт-дисків та програвач DVD. Кожен має свій унікальний метод реалізації для відтворення музики.

Інший клас "комбінованого приводу" успадковує CD і DVD (див. Зображення нижче). Який метод гри повинен успадкувати? Це може спричинити серйозні проблеми з дизайном. А отже, Java не дозволяє багаторазове успадкування.

Тепер візьмемо ще один приклад Собаки.

Припустимо, у вас є вимога, коли клас "собака" успадковує клас "тварина" та "домашня тварина" (див. Зображення нижче). Але ви не можете розширити два класи на Java. То що б ти зробив? Рішення - інтерфейс.

У довіднику щодо інтерфейсу сказано:

  • Інтерфейс - це 100% абстрактний клас і має лише абстрактні методи.
  • Клас може реалізувати будь-яку кількість інтерфейсів.

Клас Собака може поширюватися на клас "Тварина" та реалізовувати інтерфейс як "Домашня тварина".

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

Крок 1) Скопіюйте наступний код у редактор.

інтерфейс Pet {публічний тест на порожнечу ();}клас Собака знаряддя Pet {публічний тест на порожнечу () {System.out.println ("Реалізований метод інтерфейсу");}public static void main (String args []) {Домашня тварина p = новий Собака ();p.test ();}}

Крок 2) Збережіть, скомпілюйте та запустіть код. Дотримуйтесь результатів.

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

Клас Інтерфейс
У класі ви можете створити екземпляр змінної та створити об’єкт. В інтерфейсі ви не можете створити екземпляр змінної та створити об’єкт.
Клас може містити конкретні (з реалізацією) методи Інтерфейс не може містити конкретні (з реалізацією) методи

Специфікатори доступу, що використовуються з класами, є приватними, захищеними та загальнодоступними.

В інтерфейсі використовується лише один специфікатор - Public.

Коли використовувати інтерфейс та абстрактний клас?

  • Використовуйте абстрактний клас, коли шаблон потрібно визначити для групи підкласів
  • Використовуйте інтерфейс, коли роль має бути визначена для інших класів, незалежно від дерева успадкування цих класів

Повинен знати факти про Інтерфейс

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

Короткий зміст :

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