An Vmesnik v Javi programski jezik je definiran kot abstraktni tip, ki se uporablja za določanje obnašanja razreda. Vmesnik v Javi je načrt vedenja. Vmesnik Java vsebuje statične konstante in abstraktne metode.
Kaj so vmesniki v Javi?
Vmesnik v Javi je a mehanizem za dosego abstrakcija . V vmesniku Java so lahko samo abstraktne metode, ne pa telo metode. Uporablja se za doseganje abstrakcije in večkratno dedovanje v Javi z uporabo vmesnika . 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 .
Ko se za tip entitete odločamo glede na njeno obnašanje in ne preko atributa, jo moramo definirati kot vmesnik.
Sintaksa za vmesnike Java
interface { // declare constant fields // declare methods that abstract // by default. }>
Če želite deklarirati vmesnik, uporabite ključno besedo vmesnik. Uporablja se za zagotavljanje popolne abstrakcije. To pomeni, da so vse metode v vmesniku deklarirane s praznim telesom in so javne, vsa polja pa so privzeto javna, statična in končna. Razred, ki implementira vmesnik, mora implementirati vse metode, deklarirane v vmesniku. Za implementacijo vmesnika uporabite ključno besedo implements.
java lambda
Uporaba vmesnikov v Javi
Spodaj so navedene uporabe vmesnikov v Javi:
- Uporablja se za doseganje popolne abstrakcije.
- Ker java ne podpira večkratnega dedovanja v primeru razreda, lahko z uporabo vmesnika doseže večkratno dedovanje.
- Vsak razred lahko razširi samo 1 razred, lahko pa kateri koli razred implementira neskončno število vmesnikov.
- Uporablja se tudi za doseganje ohlapnega spoja.
- Vmesniki se uporabljajo za izvajanje abstrakcije.
Postavlja se torej vprašanje, zakaj uporabljati vmesnike, če imamo abstraktne razrede?
Razlog je v tem, da lahko abstraktni razredi vsebujejo nekončne spremenljivke, medtem ko so spremenljivke v vmesniku končne, javne in statične.
// A simple interface interface Player { final int id = 10; int move(); }>
Razmerje med razredom in vmesnikom
Razred lahko razširi drug razred, podoben temu, vmesnik lahko razširi drug vmesnik. Toda samo razred se lahko razširi na drug vmesnik, obratno pa ni dovoljeno.
Razlika med razredom in vmesnikom
Čeprav se zdita, da sta razred in vmesnik enaka, obstajajo določene razlike med razredi in vmesnikom. Glavne razlike med razredom in vmesnikom so navedene spodaj:
Razred | Vmesnik |
---|---|
V razredu lahko ustvarite spremenljivke in ustvarite objekt. | V vmesniku ne morete instancirati spremenljivk in ustvariti predmeta. |
Razred lahko vsebuje konkretne (z implementacijo) metode | Vmesnik ne more vsebovati konkretnih (z implementacijo) metod. |
Specifikatorji dostopa, ki se uporabljajo z razredi, so zasebni, zaščiteni in javni. | V vmesniku je uporabljen samo en specifikator - Public. |
JavaIzvedba: Za implementacijo vmesnika uporabimo ključno besedo pripomočke
// Java program to demonstrate working of // interface import java.io.*; // A simple interface interface In1 { // public, static and final final int a = 10; // public and abstract void display(); } // A class that implements the interface. class TestClass implements In1 { // Implementing the capabilities of // interface. public void display(){ System.out.println('Geek'); } // Driver Code public static void main(String[] args) { TestClass t = new TestClass(); t.display(); System.out.println(t.a); } }>
Izhod
Geek 10>
Primeri vmesnikov Java
Vzemimo primer vozil, kot so kolesa, avtomobili, kolesa itd., ki imajo skupne funkcije. Tako naredimo vmesnik in postavimo vse te skupne funkcionalnosti. In dovolite kolesu, kolesu, avtomobilu itd., da vse te funkcije v svojem razredu izvajajo na svoj način.
Spodaj je izvedba zgornje teme:
Java // Java program to demonstrate the // real-world example of Interfaces import java.io.*; interface Vehicle { // all are the abstract methods. void changeGear(int a); void speedUp(int a); void applyBrakes(int a); } class Bicycle implements Vehicle{ int speed; int gear; // to change gear @Override public void changeGear(int newGear){ gear = newGear; } // to increase speed @Override public void speedUp(int increment){ speed = speed + increment; } // to decrease speed @Override public void applyBrakes(int decrement){ speed = speed - decrement; } public void printStates() { System.out.println('speed: ' + speed + ' gear: ' + gear); } } class Bike implements Vehicle { int speed; int gear; // to change gear @Override public void changeGear(int newGear){ gear = newGear; } // to increase speed @Override public void speedUp(int increment){ speed = speed + increment; } // to decrease speed @Override public void applyBrakes(int decrement){ speed = speed - decrement; } public void printStates() { System.out.println('speed: ' + speed + ' gear: ' + gear); } } class GFG { public static void main (String[] args) { // creating an instance of Bicycle // doing some operations Bicycle bicycle = new Bicycle(); bicycle.changeGear(2); bicycle.speedUp(3); bicycle.applyBrakes(1); System.out.println('Bicycle present state :'); bicycle.printStates(); // creating instance of the bike. Bike bike = new Bike(); bike.changeGear(1); bike.speedUp(4); bike.applyBrakes(3); System.out.println('Bike present state :'); bike.printStates(); } }>
Izhod
Bicycle present state : speed: 2 gear: 2 Bike present state : speed: 1 gear: 1>
Prednosti vmesnikov v Javi
Prednosti uporabe vmesnikov v Javi so naslednje:
- Brez skrbi za izvedbeni del lahko dosežemo varnost izvedbe.
- V Javi večkratno dedovanje ni dovoljeno, vendar lahko uporabite vmesnik, da ga uporabite, saj lahko implementirate več kot en vmesnik.
Večkratno dedovanje v Javi z uporabo vmesnika
Večkratno dedovanje je koncept OOP, ki ga ni mogoče implementirati v Javi z uporabo razredov. Lahko pa uporabimo več dedovanja v Javi z vmesnikom. preverimo to na primeru.
primer:
Java // Java program to demonstrate How Diamond Problem // Is Handled in case of Default Methods // Interface 1 interface API { // Default method default void show() { // Print statement System.out.println('Default API'); } } // Interface 2 // Extending the above interface interface Interface1 extends API { // Abstract method void display(); } // Interface 3 // Extending the above interface interface Interface2 extends API { // Abstract method void print(); } // Main class // Implementation class code class TestClass implements Interface1, Interface2 { // Overriding the abstract method from Interface1 public void display() { System.out.println('Display from Interface1'); } // Overriding the abstract method from Interface2 public void print() { System.out.println('Print from Interface2'); } // Main driver method public static void main(String args[]) { // Creating object of this class // in main() method TestClass d = new TestClass(); // Now calling the methods from both the interfaces d.show(); // Default method from API d.display(); // Overridden method from Interface1 d.print(); // Overridden method from Interface2 } }>
Izhod
Default API>
Nove funkcije, dodane vmesnikom v JDK 8
Nekatere funkcije so dodane vmesnikom v posodobitvi JDK 8, omenjeni spodaj:
1. Pred JDK 8 vmesnik ni mogel definirati izvedbe. Zdaj lahko dodamo privzeto izvedbo za metode vmesnika. Ta privzeta izvedba ima posebno uporabo in ne vpliva na namen vmesnikov.
Recimo, da moramo obstoječemu vmesniku dodati novo funkcijo. Očitno stara koda ne bo delovala, saj razredi niso implementirali teh novih funkcij. Tako bomo s pomočjo privzete izvedbe dali privzeto telo za novo dodane funkcije. Potem bodo stare kode še vedno delovale.
Spodaj je izvedba zgornje točke:
Java // Java program to show that interfaces can // have methods from JDK 1.8 onwards interface In1 { final int a = 10; default void display() { System.out.println('hello'); } } // A class that implements the interface. class TestClass implements In1 { // Driver Code public static void main (String[] args) { TestClass t = new TestClass(); t.display(); } }>
Izhod
hello>
2. Druga funkcija, ki je bila dodana v JDK 8, je, da lahko zdaj definiramo statične metode v vmesnikih, ki jih je mogoče klicati neodvisno brez objekta.
Opomba: te metode niso podedovane.
Java // Java Program to show that interfaces can // have methods from JDK 1.8 onwards interface In1 { final int a = 10; static void display() { System.out.println('hello'); } } // A class that implements the interface. class TestClass implements In1 { // Driver Code public static void main (String[] args) { In1.display(); } }>
Izhod
hello>
Razširitev vmesnikov
En vmesnik lahko podeduje drugega z uporabo ključne besede extends. Ko razred izvaja vmesnik, ki podeduje drug vmesnik, mora zagotoviti izvedbo za vse metode, ki jih zahteva veriga dedovanja vmesnika.
Program 1:
Java interface A { void method1(); void method2(); } // B now includes method1 and method2 interface B extends A { void method3(); } // the class must implement all method of A and B. class gfg implements B { public void method1() { System.out.println('Method 1'); } public void method2() { System.out.println('Method 2'); } public void method3() { System.out.println('Method 3'); } }>
Program 2:
Java interface Student { public void data(); } class avi implements Student { public void data () { String name='avinash'; int rollno=68; System.out.println(name); System.out.println(rollno); } } public class inter_face { public static void main (String args []) { avi h= new avi(); h.data(); } }>
Izhod
avinash 68>
Preprosto povedano, vmesnik vsebuje več abstraktnih metod, zato implementacijo zapišite v izvedbene razrede. Če implementacija ne more zagotoviti implementacije vseh abstraktnih metod, potem razred implementacije deklarirajte z abstraktnim modifikatorjem in dokončajte implementacijo preostale metode v naslednjih ustvarjenih podrejenih razredih. Možno je deklarirati več podrejenih razredov, vendar smo na koncu zaključili implementacijo vseh abstraktnih metod.
Na splošno je razvojni proces korak za korakom:
1. stopnja – vmesniki: Vsebuje podrobnosti storitve.
2. stopnja – abstraktni razredi: Vsebuje delno izvedbo.
3. stopnja – izvedbeni razredi: Vsebuje vse izvedbe.
4. stopnja – Končna koda / glavna metoda: ima dostop do vseh podatkov vmesnikov.
primer:
Java // Java Program for // implementation Level wise import java.io.*; import java.lang.*; import java.util.*; // Level 1 interface Bank { void deposit(); void withdraw(); void loan(); void account(); } // Level 2 abstract class Dev1 implements Bank { public void deposit() { System.out.println('Your deposit Amount :' + 100); } } abstract class Dev2 extends Dev1 { public void withdraw() { System.out.println('Your withdraw Amount :' + 50); } } // Level 3 class Dev3 extends Dev2 { public void loan() {} public void account() {} } // Level 4 class GFG { public static void main(String[] args) { Dev3 d = new Dev3(); d.account(); d.loan(); d.deposit(); d.withdraw(); } }>
Izhod
Your deposit Amount :100 Your withdraw Amount :50>
Nove funkcije, dodane vmesnikom v JDK 9
Od Jave 9 naprej lahko vmesniki vsebujejo tudi naslednje:
- Statične metode
- Zasebne metode
- Zasebne statične metode
Pomembne točke v vmesnikih Java
V članku se naučimo nekaterih pomembnih točk o vmesnikih, kot je navedeno spodaj:
- Ne moremo ustvariti primerka (vmesnika ni mogoče instancirati) vmesnika, lahko pa naredimo njegovo referenco, ki se nanaša na objekt njegovega izvedbenega razreda.
- Razred lahko izvaja več kot en vmesnik.
- Vmesnik se lahko razširi na drug vmesnik ali vmesnik (več kot en vmesnik).
- Razred, ki implementira vmesnik, mora implementirati vse metode v vmesniku.
- Vse metode so javne in abstraktne. In vsa polja so javna, statična in končna.
- Uporablja se za doseganje večkratnega dedovanja.
- Uporablja se za doseganje ohlapnega spoja.
- Znotraj vmesnika ni mogoče deklarirati spremenljivk primerkov, ker so privzete spremenljivke javni statični finale.
- Znotraj vmesnika konstruktorji niso dovoljeni.
- Znotraj vmesnika glavna metoda ni dovoljena.
- Znotraj vmesnika deklaracija statičnih, končnih in zasebnih metod ni mogoča.
Morati prebrati
- Specifikator dostopa do metod v vmesnikih
- Specifikatorji dostopa za razrede ali vmesnike v Javi
- Abstraktni razredi v Javi
- Primerjalni vmesnik v Javi
- Metode vmesnika Java
- Ugnezdeni vmesnik v Javi
Pogosto zastavljena vprašanja o vmesnikih
1. Kaj je označevalni ali označeni vmesnik?
Označeni vmesniki so vmesniki brez kakršnih koli metod, služijo kot označevalec brez kakršnih koli zmožnosti.
2. Koliko vrst vmesnikov je v Javi?
Vrste vmesnikov v Javi so navedene spodaj:
- Funkcionalni vmesnik
- Vmesnik markerjev
3. Zakaj večkratno dedovanje ni podprto prek razreda v Javi?
Večkratno dedovanje ni podprto prek razreda v Javi, da bi se izognili določenim izzivom, kot so težave z dvoumnostjo in diamanti.