logo

Interfeiss Java valodā

  1. Interfeiss
  2. Interfeisa piemērs
  3. Daudzkārtēja mantošana pēc saskarnes
  4. Kāpēc interfeisā tiek atbalstīta vairākkārtēja mantošana, bet klases gadījumā tā netiek atbalstīta.
  5. Marķiera interfeiss
  6. Ligzdota saskarne

An interfeiss Java valodā ir klases projekts. Tam ir statiskas konstantes un abstraktas metodes.

Java saskarne ir mehānisms, kā sasniegt abstrakcija . Java saskarnē var būt tikai abstraktas metodes, nevis metodes pamatteksts. To izmanto, lai panāktu abstrakciju un daudzkārtēju Mantojums Java valodā .

Citiem vārdiem sakot, jūs varat teikt, ka saskarnēm var būt abstraktas metodes un mainīgie. Tam nevar būt metodes korpusa.

kamēr un do while cilpa java

Arī Java interfeiss atspoguļo IS-A attiecības .

To nevar izveidot tāpat kā abstrakto klasi.

Kopš Java 8 mēs varam būt noklusējuma un statiskās metodes saskarnē.

Kopš Java 9 mēs varam būt privātas metodes saskarnē.

Kāpēc izmantot Java interfeisu?

Interfeisa izmantošanai galvenokārt ir trīs iemesli. Tie ir norādīti zemāk.

  • To izmanto, lai panāktu abstrakciju.
  • Izmantojot saskarni, mēs varam atbalstīt vairāku mantojuma funkcionalitāti.
  • To var izmantot, lai panāktu vaļīgu savienojumu.
Kāpēc izmantot Java interfeisu

Kā deklarēt saskarni?

Interfeiss tiek deklarēts, izmantojot interfeisa atslēgvārdu. Tas nodrošina pilnīgu abstrakciju; nozīmē, ka visas saskarnes metodes ir deklarētas ar tukšu pamattekstu, un visi lauki pēc noklusējuma ir publiski, statiski un galīgi. Klasei, kas ievieš saskarni, jāievieš visas saskarnē deklarētās metodes.

iskcon pilna forma

Sintakse:

 interface { // declare constant fields // declare methods that abstract // by default. } 

Java 8 saskarnes uzlabošana

Kopš Java 8 , saskarnei var būt noklusējuma un statiskas metodes, kas tiks apspriestas vēlāk.

Kompilatora iekšējais papildinājums

Java kompilators pirms saskarnes metodes pievieno publiskos un abstraktos atslēgvārdus. Turklāt tas pirms datu dalībniekiem pievieno publiskos, statiskos un galīgos atslēgvārdus.

Citiem vārdiem sakot, saskarnes lauki pēc noklusējuma ir publiski, statiski un galīgi, un metodes ir publiskas un abstraktas.

interfeiss java

Attiecības starp klasēm un saskarnēm

Kā parādīts attēlā zemāk, klase paplašina citu klasi, saskarne paplašina citu saskarni, bet a klase ievieš saskarni .

Attiecības starp klasi un saskarni

Java interfeisa piemērs

Šajā piemērā Printable saskarnei ir tikai viena metode, un tās ieviešana ir paredzēta A6 klasē.

 interface printable{ void print(); } class A6 implements printable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ A6 obj = new A6(); obj.print(); } } 
Izmēģiniet to tūlīt

Izvade:

pandas un numpy
 Hello 

Java interfeisa piemērs: Drawable

Šajā piemērā Drawable saskarnei ir tikai viena metode. Tās ieviešanu nodrošina Taisnstūra un Circle klases. Reālā scenārijā saskarni definē kāds cits, bet tā ieviešanu nodrošina dažādi ieviešanas nodrošinātāji. Turklāt to izmanto kāds cits. Īstenošanas daļu paslēpj lietotājs, kurš izmanto saskarni.

Fails: TestInterface1.java

 //Interface declaration: by first user interface Drawable{ void draw(); } //Implementation: by second user class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class Circle implements Drawable{ public void draw(){System.out.println('drawing circle');} } //Using interface: by third user class TestInterface1{ public static void main(String args[]){ Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable() d.draw(); }} 
Izmēģiniet to tūlīt

Izvade:

 drawing circle 

Java interfeisa piemērs: Banka

Apskatīsim vēl vienu java interfeisa piemēru, kas nodrošina bankas saskarnes ieviešanu.

Fails: TestInterface2.java

 interface Bank{ float rateOfInterest(); } class SBI implements Bank{ public float rateOfInterest(){return 9.15f;} } class PNB implements Bank{ public float rateOfInterest(){return 9.7f;} } class TestInterface2{ public static void main(String[] args){ Bank b=new SBI(); System.out.println('ROI: '+b.rateOfInterest()); }} 
Izmēģiniet to tūlīt

Izvade:

 ROI: 9.15 

Vairāku Java mantojumu pēc saskarnes

Ja klase ievieš vairākas saskarnes vai saskarne paplašina vairākas saskarnes, to sauc par vairāku mantojumu.

daudzkārtēja mantošana java
 interface Printable{ void print(); } interface Showable{ void show(); } class A7 implements Printable,Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ A7 obj = new A7(); obj.print(); obj.show(); } } 
Izmēģiniet to tūlīt
 Output:Hello Welcome 

J) Java klasē netiek atbalstīta daudzkārtēja mantošana, taču tā ir iespējama, izmantojot saskarni, kāpēc?

Kā mēs paskaidrojām mantojuma nodaļā, vairākkārtēja mantošana netiek atbalstīta gadījumā klasē neskaidrības dēļ. Tomēr tas tiek atbalstīts saskarnes gadījumā, jo nav neskaidrību. Tas ir tāpēc, ka tā ieviešanu nodrošina ieviešanas klase. Piemēram:

 interface Printable{ void print(); } interface Showable{ void print(); } class TestInterface3 implements Printable, Showable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ TestInterface3 obj = new TestInterface3(); obj.print(); } } 
Izmēģiniet to tūlīt

Izvade:

r in c programmēšana
 Hello 

Kā redzat iepriekš minētajā piemērā, drukājamajam un rādāmam interfeisam ir vienādas metodes, taču tās ieviešanu nodrošina klase TestTnterface1, tāpēc nav neskaidrību.


Interfeisa mantošana

Klase ievieš saskarni, bet viena saskarne paplašina citu saskarni.

pārvērst veselu skaitli par virkni java
 interface Printable{ void print(); } interface Showable extends Printable{ void show(); } class TestInterface4 implements Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ TestInterface4 obj = new TestInterface4(); obj.print(); obj.show(); } } 
Izmēģiniet to tūlīt

Izvade:

 Hello Welcome 

Java 8 noklusējuma metode saskarnē

Kopš Java 8 saskarnē var būt metodes pamatteksts. Bet mums tā jāpadara par noklusējuma metodi. Apskatīsim piemēru:

Fails: TestInterfaceDefault.java

 interface Drawable{ void draw(); default void msg(){System.out.println('default method');} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceDefault{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); d.msg(); }} 
Izmēģiniet to tūlīt

Izvade:

 drawing rectangle default method 

Java 8 statiskā metode saskarnē

Kopš Java 8 saskarnē var būt statiska metode. Apskatīsim piemēru:

Fails: TestInterfaceStatic.java

 interface Drawable{ void draw(); static int cube(int x){return x*x*x;} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceStatic{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); System.out.println(Drawable.cube(3)); }} 
Izmēģiniet to tūlīt

Izvade:

 drawing rectangle 27 

J) Kas ir marķieris vai marķētais interfeiss?

Saskarne, kurai nav dalībnieku, ir pazīstama kā marķieris vai marķēts interfeiss, piemēram, Serializējams , Klonējams, Remote utt. Tie tiek izmantoti, lai JVM sniegtu būtisku informāciju, lai JVM varētu veikt kādu noderīgu darbību.

 //How Serializable interface is written? public interface Serializable{ } 

Ligzdota saskarne Java

Piezīme. Interfeisam var būt cita saskarne, kas ir pazīstama kā ligzdots interfeiss. Mēs to detalizēti apgūsim ligzdotas klases nodaļā. Piemēram:

 interface printable{ void print(); interface MessagePrintable{ void msg(); } } 
Vairāk par Nested Interface