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.