V Javě jsou rozhraní nezbytná, pokud jde o nastavení třídních smluv a zaručení konzistence kódu v oblasti programování v Javě. Slouží jako plán třídy tím, že nastiňuje řadu metod, které musí implementační třída implementovat. Vývojáři mohou dosáhnout abstrakce, modularity a udržovatelnosti jejich kódu pomocí rozhraní. The různé typy rozhraní v Javě bude pojednáno v této části.
Rozhraní značek
Rozhraní značek, často nazývaná rozhraní značek, jsou rozhraní bez deklarovaných metod. Jednoduše řečeno, slouží jako značky, které signalizují, že třída, která implementuje rozhraní značek, má určité vlastnosti nebo kvality. Runtime prostředí Java a další nástroje využívají tato rozhraní API k poskytování dalších funkcí nebo dat. Serializable, Cloneable a Remote jsou některé příklady rozhraní značek v Javě.
Funkční rozhraní
V rámci vylepšení lambda výrazů a funkčního programování byla do Javy 8 přidána funkční rozhraní. Rozhraní, které má právě jednu abstraktní metodu, je prý funkční. Kromě toho jsou možné výchozí a statické metody. Mnoho funkcí funkčního programování Java, jako jsou výrazy lambda a odkazy na metody, využívá funkční rozhraní. Predikát, Spotřebitel, Funkce a Dodavatel jsou jen některé z vestavěných funkčních rozhraní, které nabízí balíček java.util.function.
Rozhraní Single Abstract Method (SAM).
Před Javou 8 existovaly určité druhy funkčních rozhraní nazývaných SAM rozhraní. Tato rozhraní mohou mít libovolný počet výchozích nebo statických metod, ale pouze jednu abstraktní metodu. Runnable, Comparator a MouseListener je několik rozhraní API pre-Java 8, která obsahují příklady rozhraní SAM. Se zavedením funkčních rozhraní v Javě 8 lze rozhraní SAM používat s výrazy lambda a považovat je za funkční rozhraní.
java long to int
Normální rozhraní
Nejrozšířenějším typem rozhraní v Javě jsou normální rozhraní. Mají jednu nebo více abstraktních metod, které musí implementovat třídy, které implementují rozhraní. Počínaje Java 8 mohou normální rozhraní navíc obsahovat výchozí a statické metody. Normální rozhraní používají vývojáři ke specifikaci pravidel nebo požadavků, které musí třídy dodržovat. List, Set a Map, které se všechny nacházejí v balíčku java.util, jsou příklady typických rozhraní Java.
Vícenásobná dědičná rozhraní
kde je nastavení prohlížeče
Java umožňuje třídám implementovat více rozhraní, ale nepodporuje vícenásobnou dědičnost tříd. Rozhraní, která jsou implementována třídou k současnému definování mnoha smluv nebo dědění chování, jsou známá jako rozhraní vícenásobné dědičnosti. Třída může nabídnout funkce nastíněné každým rozhraním implementací několika rozhraní. S pomocí této funkce mohou vývojáři znovu použít kód a zvýšit přizpůsobivost svých nápadů.
Zde jsou příklady kódu pro každý typ rozhraní v Javě spolu s jejich odpovídajícím výstupem:
Rozhraní značek
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 } }
Výstup:
true
Funkční rozhraní
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 } }
Výstup:
false true
Rozhraní jednoduché abstraktní metody (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 } }
Výstup:
relace vypršela
Performing action
Normální rozhraní
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! } }
Výstup:
seznam polí java
Hello, World!
Vícenásobná dědičná rozhraní:
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 } }
Výstup:
Method 1 Method 2
Tyto příklady demonstrují použití a chování různých typů rozhraní v Javě. Každý fragment kódu můžete spustit samostatně a sledovat odpovídající výstup.
Závěrem lze říci, že rozhraní Java nabízejí účinnou metodu pro specifikaci smluv a dosažení modularity kódu. Rozhraní jsou nezbytná pro vývoj Java, ať už se jedná o značková rozhraní, která označují specifické vlastnosti, funkční rozhraní, která umožňují funkční programování, běžná rozhraní, která definují smlouvy, nebo vícenásobná dědičná rozhraní, která kombinují několik smluv. Vývojáři Javy jsou lépe vybaveni k vytváření jasného a rozšiřitelného kódu, když znají různé typy rozhraní a jejich funkce.