logo

Типи інтерфейсів в Java

У Java інтерфейси є важливими, коли справа доходить до встановлення контрактів класів і гарантування узгодженості коду в сфері програмування на Java. Він служить планом класу, окреслюючи низку методів, які реалізуючий клас повинен реалізувати. Розробники можуть досягти абстрактності, модульності та зручності обслуговування коду, використовуючи інтерфейси. The різні типи інтерфейсів в Java буде розглянуто в цьому розділі.

Інтерфейси маркерів

Інтерфейси маркерів, які часто називають інтерфейсами тегів, є інтерфейсами без оголошених методів. Простіше кажучи, вони служать маркерами, сигналізуючи про те, що клас, який реалізує інтерфейс маркера, має певні властивості або якості. Середовище виконання Java та інші інструменти використовують ці API для надання додаткових функцій або даних. Serializable, Cloneable і Remote є деякими екземплярами маркерних інтерфейсів у Java.

Функціональні інтерфейси

У рамках вдосконалення лямбда-виразів і функціонального програмування до Java 8 було додано функціональні інтерфейси. Інтерфейс, який має точно один абстрактний метод, називається функціональним. Крім того, можливі стандартні та статичні методи. Багато можливостей функціонального програмування Java, наприклад лямбда-вирази та посилання на методи, використовують функціональні інтерфейси. Предикат, Споживач, Функція та Постачальник – це лише деякі вбудовані функціональні інтерфейси, які пропонує пакет java.util.function.

Інтерфейси єдиного абстрактного методу (SAM).

До Java 8 існували певні види функціональних інтерфейсів, які називалися інтерфейсами SAM. Ці інтерфейси можуть мати будь-яку кількість стандартних або статичних методів, але лише один абстрактний метод. Runnable, Comparator і MouseListener — це кілька API до Java 8, які містять приклади інтерфейсу SAM. З появою функціональних інтерфейсів у Java 8 інтерфейси SAM можна використовувати з лямбда-виразами та розглядати як функціональні інтерфейси.

string.compare c#

Нормальні інтерфейси

Найпоширенішим типом інтерфейсів у Java є звичайні інтерфейси. Вони мають один або кілька абстрактних методів, які мають реалізувати класи, що реалізують інтерфейс. Починаючи з Java 8, звичайні інтерфейси можуть додатково містити стандартні та статичні методи. Звичайні інтерфейси використовуються розробниками для вказівки правил або вимог, яким повинні відповідати класи. List, Set і Map, які містяться в пакеті java.util, є прикладами типових інтерфейсів Java.

Інтерфейси множинного успадкування

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

додати в масив java

Ось приклади коду для кожного типу інтерфейсу в Java разом із відповідним виводом:

Інтерфейси маркерів

MarkerInterfaceExample.java

 import java.io.Serializable; // Marker Interface interface MyMarkerInterface extends Serializable { } public class MarkerInterfaceExample { public static void main(String[] args) { MyMarkerInterface obj = new MyMarkerInterface() { }; System.out.println(obj instanceof Serializable); // true } } 

Вихід:

 true 

Функціональні інтерфейси

FunctionalInterfaceExample.java

 import java.util.function.Predicate; public class FunctionalInterfaceExample { public static void main(String[] args) { Predicate isLengthGreaterThan5 = str -> str.length() > 5; System.out.println(isLengthGreaterThan5.test('Hello')); // false System.out.println(isLengthGreaterThan5.test('OpenAI')); // true } } 

Вихід:

 false true 

Інтерфейси єдиного абстрактного методу (SAM):

SAMInterfaceExample.java

 interface MySAMInterface { void performAction(); } public class SAMInterfaceExample { public static void main(String[] args) { MySAMInterface obj = () -> System.out.println('Performing action'); obj.performAction(); // Performing action } } 

Вихід:

що таке подання каталогу
 Performing action 

Нормальні інтерфейси

NormalInterfaceExample.java

 import java.util.List; import java.util.ArrayList; interface MyInterface { void printMessage(); } class MyClass implements MyInterface { @Override public void printMessage() { System.out.println('Hello, World!'); } } public class NormalInterfaceExample { public static void main(String[] args) { MyInterface obj = new MyClass(); obj.printMessage(); // Hello, World! } } 

Вихід:

сортування списку java
 Hello, World! 

Інтерфейси множинного успадкування:

MultipleInheritanceInterfaceExample.java

 interface Interface1 { void method1(); } interface Interface2 { void method2(); } class MyClass implements Interface1, Interface2 { @Override public void method1() { System.out.println('Method 1'); } @Override public void method2() { System.out.println('Method 2'); } } public class MultipleInheritanceInterfaceExample { public static void main(String[] args) { MyClass obj = new MyClass(); obj.method1(); // Method 1 obj.method2(); // Method 2 } } 

Вихід:

 Method 1 Method 2 

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

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