logo

Java saskarņu veidi

Java saskarnēm ir būtiska nozīme, nosakot klases līgumus un garantējot koda konsekvenci Java programmēšanas jomā. Tas kalpo kā klases projekts, aprakstot vairākas metodes, kuras ieviešanas klasei ir jāievieš. To koda abstrakciju, modularitāti un apkopjamību izstrādātāji var sasniegt, izmantojot saskarnes. The dažādi Java saskarnes veidi tiks apspriests šajā sadaļā.

Marķieru saskarnes

Marķieru saskarnes, ko bieži sauc par tagu saskarnēm, ir saskarnes, kurās nav deklarētas nekādas metodes. Vienkārši sakot, tie kalpo kā marķieri, kas norāda, ka klasei, kas ievieš marķiera saskarni, ir īpašas īpašības vai īpašības. Java izpildlaika vide un citi rīki izmanto šīs API, lai nodrošinātu papildu funkcionalitāti vai datus. Serializējams, klonējams un attālais ir daži Java marķieru saskarņu gadījumi.

Funkcionālās saskarnes

Kā daļa no lambda izteiksmju un funkcionālās programmēšanas uzlabojumiem Java 8 tika pievienotas funkcionālās saskarnes. Tiek uzskatīts, ka interfeiss, kuram ir precīzi viena abstrakta metode, ir funkcionāls. Turklāt ir iespējamas noklusējuma un statiskās metodes. Daudzas Java funkcionālās programmēšanas iespējas, piemēram, lambda izteiksmes un metožu atsauces, izmanto funkcionālās saskarnes. Predikāts, patērētājs, funkcija un piegādātājs ir tikai dažas no iebūvētajām funkcionālajām saskarnēm, ko piedāvā java.util.function pakotne.

Vienotās abstraktās metodes (SAM) saskarnes

Pirms Java 8 pastāvēja noteikta veida funkcionālās saskarnes, ko sauca par SAM saskarnēm. Šīm saskarnēm var būt neierobežots skaits noklusējuma vai statisku metožu, bet tikai viena abstraktā metode. Runnable, Comparator un MouseListener ir dažas API, kas ir pieejamas pirms Java 8 versijas un satur SAM saskarnes piemērus. Ieviešot funkcionālās saskarnes Java 8, SAM saskarnes var izmantot ar lambda izteiksmēm un uzskatīt par funkcionālām saskarnēm.

css pirmais bērns

Parastās saskarnes

Visizplatītākais Java saskarņu veids ir parastās saskarnes. Tām ir viena vai vairākas abstraktas metodes, kuras jāievieš klasēm, kas ievieš saskarni. Sākot ar Java 8, parastajās saskarnēs var papildus ietvert noklusējuma un statiskas metodes. Izstrādātāji izmanto parastās saskarnes, lai norādītu noteikumus vai prasības, kas klasēm jāievēro. Saraksts, Iestatījums un Karte, kas visi ir atrodami pakotnē java.util, ir tipisku Java saskarņu piemēri.

Vairākas mantojuma saskarnes

Java ļauj klasēm ieviest vairākas saskarnes, bet neatbalsta vairāku klašu pārmantošanu. Saskarnes, ko ievieš klase, lai vienlaikus definētu daudzus līgumus vai mantotu uzvedību, sauc par vairākām mantojuma saskarnēm. Klase var piedāvāt katras saskarnes norādīto funkcionalitāti, ieviešot vairākas saskarnes. Ar šīs funkcionalitātes palīdzību izstrādātāji var atkārtoti izmantot kodu un palielināt savu ideju pielāgošanās spēju.

Šeit ir koda piemēri katram Java saskarnes veidam, kā arī atbilstošā izvade:

pielāgots izņēmums java

Marķieru saskarnes

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

Izvade:

 true 

Funkcionālās saskarnes

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

Izvade:

 false true 

Vienas abstraktās metodes (SAM) saskarnes:

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

Izvade:

darīt java
 Performing action 

Parastās saskarnes

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

Izvade:

java matemātika
 Hello, World! 

Vairākas mantojuma saskarnes:

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

Izvade:

 Method 1 Method 2 

Šie piemēri parāda dažādu Java saskarņu veidu izmantošanu un uzvedību. Varat palaist katru koda fragmentu atsevišķi, lai novērotu atbilstošo izvadi.

Noslēgumā jāsaka, ka Java saskarnes piedāvā spēcīgu metodi līgumu precizēšanai un koda modularitātes sasniegšanai. Saskarnes ir būtiskas Java izstrādei neatkarīgi no tā, vai tās ir marķieru saskarnes, kas norāda uz specifiskām iezīmēm, funkcionālās saskarnes, kas nodrošina funkcionālu programmēšanu, regulāras saskarnes, kas nosaka līgumus, vai vairākas mantojuma saskarnes, kas apvieno vairākus līgumus. Java izstrādātāji ir labāk sagatavoti, lai izveidotu skaidru, paplašināmu kodu, ja viņi zina dažādus saskarnes veidus un to funkcijas.