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

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

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

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

Діаграма порівняння

Основа для порівнянняКласІнтерфейс
ОсновнийКлас створюється для створення об'єктів.Інтерфейс ніколи не може бути створений, оскільки методи не можуть виконувати жодних дій з виклику.
Ключове словокласінтерфейс
Специфікатор доступуЧлени класу можуть бути приватними, загальнодоступними або захищеними.Члени інтерфейсу завжди публічні.
МетодиМетоди класу визначені для виконання певної дії.Методи інтерфейсу суто абстрактні.
Реалізація / розширенняКлас може реалізовувати будь-яке число інтерфейсу і може розширювати тільки один клас.Інтерфейс може розширювати кілька інтерфейсів, але не може реалізовувати будь-який інтерфейс.
КонструкторКлас може мати конструктори для ініціалізації змінних.Інтерфейс ніколи не може мати конструктор, оскільки навряд чи існує будь-яка змінна для ініціалізації.

Визначення класу

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

 class class_name {/ * fields ... методи * /} 

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

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

Визначення інтерфейсу

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

 інтерфейс interface_name {тип var_name = значення; type method1 (список параметрів); метод типу2 (список параметрів); . . } 

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

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

Ключові відмінності між класом і інтерфейсом в Java

  1. Клас може бути створений за допомогою створення його об'єктів. Інтерфейс ніколи не створюється, оскільки методи, оголошені в інтерфейсі, є абстрактними і не виконують жодних дій, тому немає ніякого використання інстанції будь-якого інтерфейсу.
  2. Клас оголошується за допомогою класу ключових слів. Так само інтерфейс створюється за допомогою інтерфейсу ключових слів.
  3. Члени класу можуть мати специфікатор доступу, як загальнодоступний, приватний, захищений. Але члени інтерфейсу завжди публічні, тому що вони повинні бути доступні класами, що їх впроваджують.
  4. Методи всередині класу визначені для виконання дії на полях, оголошених у класі. Оскільки інтерфейсу не вистачає декларування полів, методи всередині інтерфейсу суто абстрактні.
  5. Клас може реалізовувати будь-яку кількість інтерфейсів, але може розширювати лише один суперклас. Інтерфейс може розширити будь-яку кількість інтерфейсів, але не може реалізувати будь-який інтерфейс.
  6. Клас має конструктори, визначені всередині нього для ініціалізації змінної. Але, інтерфейс не має жодних конструкторів, оскільки немає ініціалізованих полів. Поля інтерфейсу ініціалізуються тільки під час їх декларування.

Висновок:

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

Top