logo

Vmesnik v Javi

  1. Vmesnik
  2. Primer vmesnika
  3. Večkratno dedovanje po vmesniku
  4. Zakaj je večkratno dedovanje podprto v vmesniku, medtem ko ni podprto v primeru razreda.
  5. Vmesnik markerjev
  6. Ugnezdeni vmesnik

An vmesnik v Javi je načrt razreda. Ima statične konstante in abstraktne metode.

Vmesnik v Javi je mehanizem za doseganje abstrakcija . V vmesniku Java so lahko samo abstraktne metode, ne pa telo metode. Uporablja se za doseganje abstrakcije in večkratnosti dedovanje v Javi .

Z drugimi besedami, lahko rečete, da imajo lahko vmesniki abstraktne metode in spremenljivke. Ne more imeti telesa metode.

Tudi vmesnik Java predstavlja razmerje JE-A .

propozicijska logika

Ni ga mogoče instancirati tako kot abstraktnega razreda.

Od Jave 8 lahko imamo privzete in statične metode v vmesniku.

Od Jave 9 lahko imamo zasebne metode v vmesniku.

Zakaj uporabljati vmesnik Java?

Obstajajo predvsem trije razlogi za uporabo vmesnika. Podani so spodaj.

  • Uporablja se za doseganje abstrakcije.
  • Z vmesnikom lahko podpiramo funkcionalnost večkratnega dedovanja.
  • Uporablja se lahko za doseganje ohlapne povezave.
Zakaj uporabljati Java vmesnik

Kako deklarirati vmesnik?

Vmesnik je deklariran z uporabo ključne besede vmesnik. Zagotavlja popolno abstrakcijo; pomeni, da so vse metode v vmesniku deklarirane s praznim telesom, vsa polja pa so privzeto javna, statična in končna. Razred, ki implementira vmesnik, mora implementirati vse metode, deklarirane v vmesniku.

Sintaksa:

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

Izboljšanje vmesnika Java 8

Od Java 8 , ima lahko vmesnik privzete in statične metode, o katerih bomo razpravljali kasneje.

kako brati iz datoteke csv v javi

Notranji dodatek s strani prevajalnika

Prevajalnik Java doda javne in abstraktne ključne besede pred metodo vmesnika. Poleg tega doda javne, statične in končne ključne besede pred podatkovne člane.

Z drugimi besedami, polja vmesnika so privzeto javna, statična in končna, metode pa so javne in abstraktne.

vmesnik v Javi

Razmerje med razredi in vmesniki

Kot je prikazano na spodnji sliki, razred razširja drug razred, vmesnik razširja drug vmesnik, a razred implementira vmesnik .

Razmerje med razredom in vmesnikom

Primer vmesnika Java

V tem primeru ima vmesnik Printable samo eno metodo, njena implementacija pa je na voljo v razredu A6.

 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(); } } 
Preizkusite zdaj

Izhod:

 Hello 

Primer vmesnika Java: možnost risanja

V tem primeru ima vmesnik Drawable samo eno metodo. Njegovo izvajanje zagotavljata razreda Rectangle in Circle. V resničnem scenariju vmesnik definira nekdo drug, vendar njegovo izvedbo zagotavljajo različni ponudniki implementacije. Še več, uporablja ga nekdo drug. Implementacijski del je skrit s strani uporabnika, ki uporablja vmesnik.

Datoteka: 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(); }} 
Preizkusite zdaj

Izhod:

primer seznama v Javi
 drawing circle 

Primer vmesnika Java: Banka

Oglejmo si še en primer vmesnika java, ki zagotavlja implementacijo vmesnika Bank.

Datoteka: TestInterface2.java

natasha dalal
 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()); }} 
Preizkusite zdaj

Izhod:

 ROI: 9.15 

Večkratno dedovanje v Javi po vmesniku

Če razred izvaja več vmesnikov ali vmesnik razširja več vmesnikov, je to znano kot večkratno dedovanje.

večkratno dedovanje v Javi
 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(); } } 
Preizkusite zdaj
 Output:Hello Welcome 

V) Večkratno dedovanje ni podprto prek razreda v Javi, vendar je mogoče z vmesnikom, zakaj?

Kot smo razložili v poglavju o dedovanju, večkratno dedovanje ni podprto v primeru razred zaradi dvoumnosti. Vendar pa je podprt v primeru vmesnika, ker ni dvoumnosti. To je zato, ker njegovo izvedbo zagotavlja izvedbeni razred. Na primer:

 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(); } } 
Preizkusite zdaj

Izhod:

 Hello 

Kot lahko vidite v zgornjem primeru, imata vmesnika Printable in Showable enake metode, vendar njegovo izvedbo zagotavlja razred TestTnterface1, tako da ni dvoumnosti.


Dedovanje vmesnika

Razred implementira vmesnik, vendar en vmesnik razširja drug vmesnik.

 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(); } } 
Preizkusite zdaj

Izhod:

0,0625 kot ulomek
 Hello Welcome 

Privzeta metoda Java 8 v vmesniku

Od Jave 8 naprej imamo lahko telo metode v vmesniku. Vendar moramo narediti privzeto metodo. Poglejmo primer:

Datoteka: 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(); }} 
Preizkusite zdaj

Izhod:

 drawing rectangle default method 

Statična metoda Java 8 v vmesniku

Od Jave 8 naprej imamo lahko statično metodo v vmesniku. Poglejmo primer:

Datoteka: 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)); }} 
Preizkusite zdaj

Izhod:

 drawing rectangle 27 

V) Kaj je označevalni ali označeni vmesnik?

Vmesnik, ki nima nobenega člana, je znan kot označevalni ali označeni vmesnik, na primer, Serializable , Cloneable, Remote itd. Uporabljajo se za zagotavljanje nekaterih bistvenih informacij JVM, tako da lahko JVM izvede nekaj uporabnih operacij.

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

Ugnezdeni vmesnik v Javi

Opomba: Vmesnik ima lahko drug vmesnik, ki je znan kot ugnezdeni vmesnik. Podrobneje se bomo tega naučili v ugnezdeni razredi odsek. Na primer:

 interface printable{ void print(); interface MessagePrintable{ void msg(); } } 
Več o ugnezdenem vmesniku