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.