logo

Interfészek típusai Java nyelven

A Java-ban az interfészek elengedhetetlenek az osztályszerződések beállításához és a kódkonzisztencia garantálásához a Java programozás területén. Egy osztály tervrajzaként szolgál, felvázolva számos olyan metódust, amelyeket a megvalósító osztálynak meg kell valósítania. Kódjuk absztrakciója, modularitása és karbantarthatósága a fejlesztők által interfészek alkalmazásával mind elérhetővé válik. A különféle interfésztípusok Java nyelven ebben a részben lesz szó.

Marker interfészek

A marker interfészek, amelyeket gyakran címkeinterfészeknek neveznek, olyan interfészek, amelyekben nincs deklarált metódus. Egyszerűen fogalmazva, jelölőkként szolgálnak, jelezve, hogy a marker interfészt megvalósító osztálynak sajátos tulajdonságai vagy minőségei vannak. A Java futtatókörnyezet és más eszközök ezeket az API-kat használják extra funkciók vagy adatok biztosítására. A sorosozható, klónozható és távoli jelölőfelületek néhány példánya a Java nyelven.

Funkcionális interfészek

A lambda-kifejezések és a funkcionális programozás fejlesztésének részeként funkcionális interfészek kerültek hozzáadásra a Java 8-hoz. Egy olyan interfészről mondják, amely pontosan egy absztrakt módszerrel rendelkezik. Ezenkívül alapértelmezett és statikus módszerek is lehetségesek. Számos Java funkcionális programozási képesség, mint például a lambda-kifejezések és a metódushivatkozások, funkcionális interfészeket használ. Predikátum, Fogyasztó, Funkció és Szállító csak néhány a java.util.function csomag által kínált beépített funkcionális interfészek közül.

Single Abstract Method (SAM) interfészek

A Java 8 előtt léteztek bizonyos típusú funkcionális interfészek, az úgynevezett SAM interfészek. Ezek az interfészek tetszőleges számú alapértelmezett vagy statikus metódussal rendelkezhetnek, de csak egy absztrakt metódussal. A Runnable, Comparator és MouseListener néhány Java 8 előtti API, amely SAM interfész példákat tartalmaz. A funkcionális interfészek Java 8-ban történő bevezetésével a SAM interfészek lambda kifejezésekkel használhatók és funkcionális interfészeknek tekinthetők.

konvertálja a bájttömböt stringgé

Normál interfészek

A Java interfészeinek legelterjedtebb fajtája a normál interfészek. Egy vagy több absztrakt metódusuk van, amelyeket az interfészt megvalósító osztályoknak meg kell valósítaniuk. A Java 8-tól kezdve a normál interfészek ezenkívül tartalmazhatnak alapértelmezett és statikus metódusokat. A fejlesztők a normál interfészek segítségével határozzák meg azokat a szabályokat vagy követelményeket, amelyeket az osztályoknak követniük kell. A Lista, Set és Map, amelyek mindegyike megtalálható a java.util csomagban, a tipikus Java interfészek példái.

Több öröklési interfész

A Java lehetővé teszi az osztályok számára több interfész megvalósítását, de nem támogatja a több osztály öröklését. Azok az interfészek, amelyeket egy osztály valósít meg számos szerződés egyidejű meghatározására vagy viselkedés öröklésére, többszörös öröklődési interfészeknek nevezzük. Egy osztály több interfész megvalósításával kínálhatja az egyes interfészek által felvázolt funkcionalitást. Ennek a funkciónak a segítségével a fejlesztők újra felhasználhatják a kódot, és növelhetik ötleteik alkalmazkodóképességét.

Íme példák a kódra a Java egyes interfésztípusaihoz a megfelelő kimenettel együtt:

Marker interfészek

MarkerInterfaceExample.java

magyarázza az adatfüggetlenséget
 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 } } 

Kimenet:

 true 

Funkcionális interfészek

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 } } 

Kimenet:

 false true 

Single Abstract Method (SAM) interfészek:

SAMInterfacePélda.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 } } 

Kimenet:

linux ingyenes ipconfig
 Performing action 

Normál interfészek

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! } } 

Kimenet:

c++ hasító karakterlánc
 Hello, World! 

Több öröklési interfész:

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 } } 

Kimenet:

 Method 1 Method 2 

Ezek a példák a Java különböző típusú interfészeinek használatát és viselkedését mutatják be. Minden kódrészletet külön-külön futtathat a megfelelő kimenet megfigyeléséhez.

Összefoglalva, a Java interfészek hatékony módszert kínálnak a szerződések meghatározására és a kódmodularitás elérésére. Az interfészek elengedhetetlenek a Java fejlesztéshez, legyen szó jelölő interfészekről, amelyek meghatározott tulajdonságokat jeleznek, funkcionális interfészekről, amelyek lehetővé teszik a funkcionális programozást, szabályos interfészekről, amelyek szerződéseket határoznak meg, vagy több öröklési felületről, amelyek több szerződést egyesítenek. A Java fejlesztők jobban felkészültek az áttekinthető, bővíthető kód létrehozására, ha tisztában vannak a különböző interfésztípusokkal és azok funkcióival.