logo

Typy rozhraní v Jave

V jazyku Java sú rozhrania nevyhnutné, pokiaľ ide o nastavenie zmlúv o triedach a zaručenie konzistencie kódu v oblasti programovania Java. Slúži ako plán triedy tým, že načrtáva množstvo metód, ktoré musí implementačná trieda implementovať. Abstrakciu, modularitu a udržiavateľnosť ich kódu môžu vývojári dosiahnuť použitím rozhraní. The rôzne typy rozhraní v jazyku Java sa bude diskutovať v tejto časti.

Rozhrania značiek

Rozhrania značiek, často nazývané rozhrania značiek, sú rozhrania bez deklarovaných metód. Jednoducho povedané, slúžia ako markery, ktoré signalizujú, že trieda, ktorá implementuje rozhranie markerov, má konkrétne vlastnosti alebo kvality. Runtime prostredie Java a ďalšie nástroje využívajú tieto rozhrania API na poskytovanie dodatočných funkcií alebo údajov. Serializable, Cloneable a Remote sú niektoré príklady rozhraní markerov v Jave.

Funkčné rozhrania

V rámci vylepšení lambda výrazov a funkčného programovania boli do Java 8 pridané funkčné rozhrania. Rozhranie, ktoré má práve jednu abstraktnú metódu, je vraj funkčné. Okrem toho sú možné predvolené a statické metódy. Mnohé funkcie funkčného programovania Java, ako sú výrazy lambda a odkazy na metódy, využívajú funkčné rozhrania. Predikát, Spotrebiteľ, Funkcia a Dodávateľ sú len niektoré zo vstavaných funkčných rozhraní, ktoré ponúka balík java.util.function.

Rozhrania Single Abstract Method (SAM).

Pred Java 8 existovali určité druhy funkčných rozhraní nazývaných rozhrania SAM. Tieto rozhrania môžu mať ľubovoľný počet predvolených alebo statických metód, ale iba jednu abstraktnú metódu. Runnable, Comparator a MouseListener je niekoľko rozhraní API starších ako Java 8, ktoré obsahujú príklady rozhrania SAM. So zavedením funkčných rozhraní v jazyku Java 8 môžu byť rozhrania SAM použité s výrazmi lambda a považované za funkčné rozhrania.

java long to int

Normálne rozhrania

Najrozšírenejším druhom rozhraní v Jave sú normálne rozhrania. Majú jednu alebo viac abstraktných metód, ktoré musia implementovať triedy, ktoré implementujú rozhranie. Počnúc Java 8 môžu normálne rozhrania navyše obsahovať predvolené a statické metódy. Normálne rozhrania používajú vývojári na špecifikovanie pravidiel alebo požiadaviek, ktoré musia triedy dodržiavať. List, Set a Map, ktoré sa všetky nachádzajú v balíku java.util, sú príklady typických rozhraní Java.

Viacnásobné dedičné rozhrania

Java povoľuje triedam implementovať viacero rozhraní, ale nepodporuje viacnásobnú dedičnosť tried. Rozhrania, ktoré sú implementované triedou na súčasné definovanie mnohých zmlúv alebo zdedeného správania, sú známe ako rozhrania s viacerými dedičnosťami. Trieda môže ponúknuť funkčnosť načrtnutú každým rozhraním implementáciou niekoľkých rozhraní. Pomocou tejto funkcionality môžu vývojári opätovne použiť kód a zvýšiť prispôsobivosť svojich nápadov.

Tu sú príklady kódu pre každý typ rozhrania v jazyku Java spolu s ich zodpovedajúcim výstupom:

Rozhrania značiek

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ýkon:

char na reťazec v jazyku Java
 true 

Funkčné rozhrania

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ýkon:

 false true 

Rozhrania jednej abstraktnej metódy (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ýkon:

typy slučiek java for
 Performing action 

Normálne rozhrania

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ýkon:

xml komentár
 Hello, World! 

Viacnásobné dedičné rozhrania:

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ýkon:

 Method 1 Method 2 

Tieto príklady demonštrujú použitie a správanie rôznych typov rozhraní v Jave. Každý útržok kódu môžete spustiť samostatne, aby ste sledovali zodpovedajúci výstup.

Na záver, rozhrania Java ponúkajú účinnú metódu na špecifikáciu zmlúv a dosiahnutie modularity kódu. Rozhrania sú nevyhnutné pre vývoj Java, či už ide o značkovacie rozhrania, ktoré označujú špecifické vlastnosti, funkčné rozhrania, ktoré umožňujú funkčné programovanie, bežné rozhrania, ktoré definujú zmluvy, alebo viacnásobné dedičné rozhrania, ktoré kombinujú niekoľko zmlúv. Vývojári Java sú lepšie pripravení na vytváranie jasného a rozšíriteľného kódu, keď poznajú rôzne typy rozhraní a ich funkcie.