logo

Vrste sučelja u Javi

U Javi su sučelja ključna kada se radi o postavljanju ugovora klasa i jamčenju dosljednosti koda u području Java programiranja. Služi kao nacrt klase ocrtavanjem niza metoda koje implementirajuća klasa mora implementirati. Programeri mogu postići apstrakciju, modularnost i mogućnost održavanja koda koristeći sučelja. The razne vrste sučelja u Javi bit će riječi u ovom odjeljku.

Sučelja markera

Sučelja markera, koja se često nazivaju sučeljima oznaka, su sučelja bez deklariranih metoda. Jednostavno rečeno, oni služe kao markeri, signalizirajući da klasa koja implementira sučelje markera ima određena svojstva ili kvalitete. Java runtime okruženje i drugi alati koriste ove API-je za isporuku dodatnih funkcija ili podataka. Serializable, Cloneable i Remote neke su instance marker sučelja u Javi.

Funkcionalna sučelja

Kao dio poboljšanja lambda izraza i funkcionalnog programiranja, funkcionalna su sučelja dodana Javi 8. Za sučelje koje ima točno jednu apstraktnu metodu kaže se da je funkcionalno. Dodatno, moguće su zadane i statičke metode. Mnoge mogućnosti Java funkcionalnog programiranja, poput lambda izraza i referenci metoda, koriste funkcionalna sučelja. Predikat, potrošač, funkcija i dobavljač samo su neka od ugrađenih funkcionalnih sučelja koje nudi paket java.util.function.

Sučelja jedne apstraktne metode (SAM).

Prije Jave 8 postojale su određene vrste funkcionalnih sučelja nazvanih SAM sučelja. Ova sučelja mogu imati bilo koji broj zadanih ili statičkih metoda, ali samo jednu apstraktnu metodu. Runnable, Comparator i MouseListener nekoliko su API-ja prije Jave 8 koji sadrže primjere SAM sučelja. Uvođenjem funkcionalnih sučelja u Javi 8, SAM sučelja mogu se koristiti s lambda izrazima i smatrati funkcionalnim sučeljima.

char i int java

Normalna sučelja

Najraširenija vrsta sučelja u Javi su normalna sučelja. Imaju jednu ili više apstraktnih metoda koje klase koje implementiraju sučelje moraju implementirati. Počevši od Jave 8, normalna sučelja mogu dodatno sadržavati zadane i statičke metode. Uobičajena sučelja programeri koriste za određivanje pravila ili zahtjeva koje klase moraju slijediti. List, Set i Map, koji se svi nalaze u paketu java.util, primjeri su tipičnih Java sučelja.

Sučelja višestrukog nasljeđivanja

Java dopušta klasama implementaciju višestrukih sučelja, ali ne podržava višestruko nasljeđivanje klasa. Sučelja koja su implementirana od strane klase za simultano definiranje brojnih ugovora ili nasljeđivanja ponašanja poznata su kao sučelja višestrukog nasljeđivanja. Klasa može ponuditi funkcionalnost koju opisuje svako sučelje implementacijom nekoliko sučelja. Uz pomoć ove funkcionalnosti programeri mogu ponovno koristiti kod i povećati prilagodljivost svojih ideja.

Evo primjera koda za svaku vrstu sučelja u Javi zajedno s njihovim odgovarajućim izlazom:

učiniti shell skriptu izvršnom

Sučelja markera

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

Izlaz:

 true 

Funkcionalna sučelja

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

Izlaz:

 false true 

Sučelja jedne apstraktne metode (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 } } 

Izlaz:

proljeće i proljeće mvc
 Performing action 

Normalna sučelja

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

Izlaz:

primjeri programiranja u pythonu
 Hello, World! 

Sučelja višestrukog nasljeđivanja:

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

Izlaz:

 Method 1 Method 2 

Ovi primjeri pokazuju korištenje i ponašanje različitih vrsta sučelja u Javi. Možete pokrenuti svaki isječak koda pojedinačno kako biste promatrali odgovarajući izlaz.

Zaključno, Java sučelja nude snažnu metodu za određivanje ugovora i postizanje modularnosti koda. Sučelja su bitna za razvoj Jave, bilo da se radi o markerskim sučeljima koja označavaju specifične osobine, funkcionalnim sučeljima koja omogućuju funkcionalno programiranje, uobičajenim sučeljima koja definiraju ugovore ili sučeljima višestrukog nasljeđivanja koja kombiniraju nekoliko ugovora. Java programeri bolje su opremljeni za izradu jasnog, proširivog koda kada su svjesni različitih vrsta sučelja i njihovih funkcija.