logo

Java-käyttöliittymä

  1. Käyttöliittymä
  2. Esimerkki käyttöliittymästä
  3. Moniperintö käyttöliittymän mukaan
  4. Miksi käyttöliittymässä tuetaan useampaa periytymistä, vaikka sitä ei tueta luokan tapauksessa.
  5. Merkin käyttöliittymä
  6. Sisäkkäinen käyttöliittymä

An käyttöliittymä Javassa on luokan suunnitelma. Siinä on staattisia vakioita ja abstrakteja menetelmiä.

Java-käyttöliittymä on saavuttamismekanismi abstraktio . Java-rajapinnassa voi olla vain abstrakteja menetelmiä, ei metodirunkoa. Sitä käytetään abstraktion ja moninkertaisuuden saavuttamiseen perintö Javassa .

Toisin sanoen voidaan sanoa, että rajapinnoilla voi olla abstrakteja menetelmiä ja muuttujia. Sillä ei voi olla metodirunkoa.

Java käyttöliittymä myös edustaa IS-A-suhdetta .

epädeterministiset äärelliset automaatit

Sitä ei voida instantoida aivan kuten abstraktia luokkaa.

Java 8:sta lähtien meillä voi olla oletus- ja staattiset menetelmät käyttöliittymässä.

Java 9:stä lähtien meillä voi olla yksityisiä menetelmiä käyttöliittymässä.

Miksi käyttää Java-käyttöliittymää?

Käyttöliittymän käyttöön on pääasiassa kolme syytä. Ne on annettu alla.

  • Sitä käytetään abstraktion saavuttamiseen.
  • Käyttöliittymän avulla voimme tukea moniperinnön toimivuutta.
  • Sitä voidaan käyttää löysän liitoksen aikaansaamiseen.
Miksi käyttää Java-käyttöliittymää

Kuinka ilmoittaa käyttöliittymä?

Käyttöliittymä määritellään käyttämällä käyttöliittymäavainsanaa. Se tarjoaa täydellisen abstraktion; tarkoittaa, että kaikki rajapinnan menetelmät on ilmoitettu tyhjällä rungolla, ja kaikki kentät ovat oletuksena julkisia, staattisia ja lopullisia. Luokan, joka toteuttaa rajapinnan, tulee toteuttaa kaikki rajapinnassa ilmoitetut menetelmät.

Syntaksi:

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

Java 8 -käyttöliittymän parantaminen

Siitä asti kun Java 8 , käyttöliittymässä voi olla oletus- ja staattiset menetelmät, joista keskustellaan myöhemmin.

burak ozcivit

Kääntäjän sisäinen lisäys

Java-kääntäjä lisää julkiset ja abstraktit avainsanat ennen käyttöliittymämenetelmää. Lisäksi se lisää julkiset, staattiset ja lopulliset avainsanat ennen datajäseniä.

Toisin sanoen käyttöliittymäkentät ovat oletuksena julkisia, staattisia ja lopullisia, ja menetelmät ovat julkisia ja abstrakteja.

käyttöliittymä javassa

Luokkien ja rajapintojen välinen suhde

Kuten alla olevasta kuvasta näkyy, luokka laajentaa toista luokkaa, rajapinta laajentaa toista rajapintaa, mutta a luokka toteuttaa rajapinnan .

Luokan ja käyttöliittymän välinen suhde

Esimerkki Java-liittymästä

Tässä esimerkissä Printable-rajapinnalla on vain yksi menetelmä, ja sen toteutus on A6-luokassa.

 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(); } } 
Testaa nyt

Lähtö:

 Hello 

Java-käyttöliittymä Esimerkki: Piirrettävä

Tässä esimerkissä Drawable-liittymällä on vain yksi menetelmä. Sen toteutuksen tarjoavat Rectangle- ja Circle-luokat. Todellisessa skenaariossa rajapinnan määrittelee joku muu, mutta sen toteutuksen tarjoavat eri toteutustoimittajat. Lisäksi sitä käyttää joku muu. Käyttöliittymää käyttävä käyttäjä piilottaa toteutusosan.

Tiedosto: 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(); }} 
Testaa nyt

Lähtö:

bourne-ain -kuori
 drawing circle 

Java-käyttöliittymä Esimerkki: Pankki

Katsotaanpa toinen esimerkki Java-rajapinnasta, joka tarjoaa pankin käyttöliittymän toteutuksen.

Tiedosto: TestInterface2.java

linuxin muutostiedosto
 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()); }} 
Testaa nyt

Lähtö:

 ROI: 9.15 

Javan moniperintö käyttöliittymän kautta

Jos luokka toteuttaa useita rajapintoja tai rajapinta laajentaa useita rajapintoja, sitä kutsutaan moniperinnöksi.

moniperintö javassa
 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(); } } 
Testaa nyt
 Output:Hello Welcome 

K) Moniperintöä ei tueta luokan kautta javassa, mutta se on mahdollista käyttöliittymän kautta, miksi?

Kuten olemme selittäneet periytymisluvussa, moniperintöä ei tueta tapauksessa luokkaa epäselvyyden takia. Sitä kuitenkin tuetaan käyttöliittymän tapauksessa, koska siinä ei ole epäselvyyttä. Tämä johtuu siitä, että toteutusluokka tarjoaa sen toteutuksen. Esimerkiksi:

 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(); } } 
Testaa nyt

Lähtö:

 Hello 

Kuten yllä olevasta esimerkistä näet, tulostettavalla ja näytettävällä käyttöliittymällä on samat menetelmät, mutta sen toteuttaminen on luokka TestTnterface1, joten epäselvyyttä ei ole.


Käyttöliittymän periytyminen

Luokka toteuttaa rajapinnan, mutta yksi rajapinta laajentaa toista rajapintaa.

 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(); } } 
Testaa nyt

Lähtö:

javatpoint java
 Hello Welcome 

Java 8 -oletusmenetelmä käyttöliittymässä

Java 8:sta lähtien käyttöliittymässä voi olla metodirunko. Mutta meidän on tehtävä siitä oletusmenetelmä. Katsotaanpa esimerkkiä:

Tiedosto: 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(); }} 
Testaa nyt

Lähtö:

 drawing rectangle default method 

Java 8:n staattinen menetelmä käyttöliittymässä

Java 8:sta lähtien meillä voi olla staattinen menetelmä käyttöliittymässä. Katsotaanpa esimerkkiä:

Tiedosto: 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)); }} 
Testaa nyt

Lähtö:

 drawing rectangle 27 

K) Mikä on merkintä tai tunnistettu käyttöliittymä?

Liittymä, jossa ei ole jäsentä, tunnetaan esimerkiksi markkerina tai tagged-rajapinnana, Sarjasoitavissa , Kloonattavissa, Remote jne. Niitä käytetään antamaan joitakin olennaisia ​​tietoja JVM:lle, jotta JVM voi suorittaa hyödyllisiä toimintoja.

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

Sisäkkäinen käyttöliittymä Javassa

Huomautus: Liitännällä voi olla toinen liitäntä, joka tunnetaan sisäkkäisenä käyttöliittymänä. Opimme sen yksityiskohtaisesti artikkelissa sisäkkäiset luokat luku. Esimerkiksi:

 interface printable{ void print(); interface MessagePrintable{ void msg(); } } 
Lisätietoja Nested Interfacesta