Kaj je vmesnik v Javi in ​​kako ga uporabiti?



Ta članek vam bo pomagal pri celovitem pristopu k vmesniku Java in različnim vrstam primerov, povezanih z njegovo funkcionalnostjo.

' Vmesnik je napredna raven doseganja abstrakcije v programskem jeziku Java. Java vmesnik pomaga pri zmanjšanje zapletenosti v kodi in poenostavlja berljivost . V tem članku vam bom razložil vmesnik Java v naslednjem dokumentu.

Kaj je vmesnik Java?

Računalniški vmesnik je znan kot meja, ki ločuje dva ali več sistemov. Izmenjuje podatke med komponentami v sistemu, ki lahko signalizira, ukazuje ali protokoli.





java-interface

upravljanje javnih naročil pri vodenju projektov

Java Abstraction zagotavlja funkcionalnost določene metode s skrivanjem logike izvajanja, zapisane znotraj metode. Podobno je Java Interface tudi abstraktni razred, ki vključuje izjavo o metodi, ne pa tudi njene definicije. Razred izvaja vmesnik za dedovanje abstraktnih metod. Poleg abstraktnih metod je an vmesnik lahko tudi vključuje konstante, statične metode, ugnezdeni vmesniki in privzete metode.



Podobnosti med razredom in vmesnikom.

Vmesnik je popolnoma podoben običajnemu razredu v Javi. Vmesnik vključuje abstraktne metode, ki so namenjene izvajanju. Ta postopek je zgolj enak dedovanju, kar je normalno, ko gre za razrede. O podobnostih bomo še razpravljali.

  • Enako kot razred lahko vmesnik vsebuje tudi toliko metod, kot je potrebno.
  • Podobno kot pri razredih je tudi vmesnik zapisan z .java razširitvena datoteka.
  • Presenetljivo je, da se bo bajtoda za vmesnik pojavila v .razred mapa.
  • Vmesnik je prikazan v obliki paketa, njegova ustrezna bajtoda pa je v imeniku, ki se ujema z imenom paketa.

Zakaj potrebujemo vmesnik?

Java ne podpira Več dediščin, zaradi česar razredom ne bo dovoljeno razširiti več kot enega razreda na primerku. Otroški razredi ni mogel podedovati lastnosti več starševskih razredov v enem primeru, saj ima za posledico Diamantna težava. Če želite premagati to težavo, Vmesnik je uveden. Razumimo to težavo na primeru.



Predpostavimo, da imamo dve ravnini, eno lahko nosi samo potniki, samo drugo položaj. Zdaj moramo podedovati lastnosti tovornega in potniškega letala. Java te rešitve ne bi podprla, saj konča v dvoumnost med obema ravninama.

Ampak, če lahko to omogočite tako, da Java občuti, da podeduje eno ravnino in izvajanje metode, prisotne v drugi ravnini. Je kot komercialno letalo, ki prevaža potnike in tovorno prtljago. Vmesnik je kot izdelava večje ravnine, ki bi lahko opravila obe nalogi, ne da bi vmešavala medsebojne komponente, namesto da bi si metode samo sposodila od Razred vmesnika.

// Koda razreda A

zapakiraj več razredov A {void msg () {System.out.println ('Hello')}}

// Koda razreda B

paket več razredov B {void msg () {System.out.println ('Dobrodošli')}}

Koda razreda C

paket več razredov C razširi A, B {// Java tega ne bo sprejela, povzročilo bo napako in koda ne bo izvedena. javna statična void main (String args []) {C obj = new C () obj.msg ()}}

Izhod:

Napaka. Ta poseben pristop daje izjemo. Java ne podpira več dedovanja. Ta napaka je znana kot Diamantna težava 

Preizkusimo rešitev z uporabo vmesnika, Otroški tečaji lahko dostopa do metod iz Več staršev razredi na enem primerku.

// Koda vmesnika

paket MIS rešitev javnega vmesnika {public void Pozdravljeni () public void Dobrodošli ()}

// Koda predavanja

paket MIS javni razred classA izvaja rešitev {public void Hello () {java.lang.System.out.println ('Hello world')} public void Dobrodošli () {java.lang.System.out.println ('Dobrodošli v Edureki ')} public static void main (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Izhod:

Pozdravljen, svet
Dobrodošli v Edureki

Razglasitev vmesnika Java: Sintaksa

vmesnik_ime_ime {// prijavi konstantna polja // deklariraj metode () // privzete metode}

Oglejmo si primer vmesnika Java

Primer vmesnika Java

Ustvarimo preprost kalkulator, ki temelji na vmesniku Java.

// Koda vmesnika

osnovno delovanje paketa matematika javni vmesnik {public void add () public void sub () public void mul () public void div ()}

// Koda predavanja

paket osnovne operacije uvoz java.util.Scanner javni razred student1 izvaja matematiko {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Vnesite kateri koli dve celoštevilčni vrednosti za izvedbo seštevanja') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Vsota' + a + 'in' + b + 'je' + s)} @ Override public void sub () {Scanner kb = new Scanner (System.in) System.out.println ('Vnesite kateri koli dve celoštevilčni vrednosti za izvedbo odštevanja') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('Razlika med' + a + 'in' + b + 'je' + s)} @Override public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter poljubno dve celoštevilčni vrednosti množenja ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' Produkt '+ a +' in '+ b +' je '+ s)} @Override public void div () {Scanner kb = new Scanner (System.in) System.out.println ('Enter any two integer values ​​division') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Količnik' + a + 'in' + b + 'je' + s)} public static void main (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Izhod:

Z nadaljnjim napredovanjem se bomo naučili gnezditi vmesnik Java.

Gnezdenje vmesnika Java

Gnezdenje vmesnikov je postopek prijave vmesnika znotraj drugega Obstoječi vmesnik ali razglasitev vmesnika znotraj Razred. Vgnezdeni vmesnik je znan tudi kot Notranji vmesnik.

Do ugnezdenega vmesnika ni mogoče dostopati neposredno . Zato je gnezdenje izvedeno za razrešitev imenskih prostorov tako, da jih razvrsti v skupine z njimi povezanimi Vmesniki in Predavanja. Po tem postopkulahko pokličemo Vgnezden vmesnik skozi Zunanji razred ali Zunanji vmesnik ime, ki mu sledi a pika (.) , in Ime vmesnika.

Poskusimo nekaj primerov, ki temeljijo na Gnezdenje vmesnikov. Najprej poskusimo ugnezditi a Java vmesnik znotraj drugega Java vmesnik kot je prikazano spodaj:

// Koda vmesnika

paket Nest javni vmesnik OuterInterface {void display () vmesnik InnerInterface {void InnerMethod ()}}

// Koda predavanja

paket Nest razred NestedInterfaceDemo implementira OuterInterface.InnerInterface {public void InnerMethod () {int n = 10, t1 = 0, t2 = 1 System.out.print ('First' + n + 'terms:') for (int i = 1 i & lt = n ++ i) {System.out.print (t1 + '+') int sum = t1 + t2 t1 = t2 t2 = sum} System.out.println ('nTiskanje iz metode ugnezdenega notranjega vmesnika ...! n ')} javna statična void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Izhod:

Prvih 10 izrazov: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Tiskanje iz metode ugnezdenega notranjega vmesnika ...!

Zdaj pa poskusimo ugnezditi a Java vmesnik znotraj a Razred Java.

// Koda vmesnika

paket Nest2 javni razred EdurekaClass {vmesnik EdurekaInterface {void NestedMethod ()}}

// Koda predavanja

paket Nest2 razreda NestedInterfaceDemo2 implementira EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' byte [] strAsByteArray = input.getBytes () byte [] rezultat = nov bajt [strAsByteArray.length] iBt lt itrAstr. .length i ++) rezultat [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (nov niz (rezultat))} public static void main (String args []) {EdurekaClass.EdurekaInterface obj = new NestedInterfaceDemo2 () obj.NestedMethod ()}}

Izhod:

akerudE

Čeprav je vmesnik na videz skoraj podoben razredu, je med njimi nekaj razlik, pogovorimo se o njihovih razlikah.

Razlika med razredom Java in vmesnikom Java

VMESNIK RAZRED
Podpira večkratno dedovanje Ne podpira večkratne dediščine
Nima podatkovnih članov Vključuje člane s podatki
Nima konstruktorjev Vključuje konstruktorje
Vključuje nepopolne člane (član s podpisom) Vključuje tako popolne (Povzetek) kot nepopolne člane
Nima modifikatorjev dostopa Vključuje modifikatorje dostopa
Vmesnik nima statičnih članov Razred ima vse člane kot Static

Prednosti in slabosti vmesnika Java

Prednosti:

  • Podpira vmesnik Java Večkratno dedovanje.
  • Java Interface programerjem omogoča, da razbijejo kompleksne programske pristope in poenostavijo odvisnosti med predmeti.
  • Java Interface naredi podatkovni člani in metode v aplikaciji, ki jo je treba ohlapno povezati.

Slabosti:

  • Uporaba vmesnika Java ruši hitrost izvedbe vloge.
  • Java vmesniki v aplikaciji se pogosto ali večkrat uporabljajo ali pa se sploh ne uporabljajo.

Ključne točke vmesnika Java

  • Nobena od metod, deklariranih v vmesniku, nima telesa, ki omogoča popolno abstrakcijo.
  • Objekta vmesnika ni mogoče ustvariti. Zato namestitev vmesnika ni mogoča.
  • Razred lahko implementira vmesnik z uporabo ključne besede implements. Poglejmo to na primeru.

// Koda vmesnika

paket extInterface javni vmesnik extInterface {public void method1 () public void method2 ()}

// Koda predavanja

paket extInterface import java.util.Scanner class Edureka implementira extInterface {public void method1 () {System.out.println ('Implementation of method1') Scanner scanner = new Scanner (System.in) System.out.println ('Enter number najti kvadratni koren v Javi: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (kvadrat) System.out.printf (' Kvadratni koren števila:% f je:% f% n ', kvadrat, squareRoot)} public void method2 () {System.out.println ('izvedba metode2')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Izhod:

izvedba metode1 Vnesite številko za iskanje kvadratnega korena v Javi: 16 Kvadratni koren številke: 16.0 je: 4.0
  • Razred lahko na enem primerku izvede več dedovanja. Dovolite nam, da ga razumemo v naslednji kodi.

// Koda vmesnika 1

paket ExtendInt javni vmesnik Interface1 {public void armstrong ()}

// Koda vmesnika 2

paket ExtendInt javni vmesnik Interface2 {public void prime ()} // Class Code paket ExtendInt javni razred Edureka2 izvaja Interface1, Interface2 {public void armstrong () {int c = 0, a, temp int n = 153 // input temp = n while (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a)} if (temp == c) System.out.println ('armstrong number') else System.out.println ('Not armstrong number') System.out.println ('Extending to Interface 1')} public void prime () {int i, m = 0, flag = 0 int n = 3 // vnos m = n / 2, če (n == 0 || n == 1) {System.out.println (n + 'ni glavno število')} else {for (i = 2i & lt = mi ++) {if (n% i == 0) {System .out.println (n + 'ni glavno število') zastava = 1 prekinitev}} if (flag == 0) {System.out.println (n + 'je prosto število')}} System.out.println ('Razširitev do vmesnika 2 ')} javni statični void main (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}

Izhod:

3 je glavno število Razširitev na vmesnik 2 armstrong število Razširitev na vmesnik 1
  • Java Interface zahteva, da se spremenljivke, ki so bile deklarirane, inicializirajo v času deklaracije.
  • Modifikatorji dostopa za vmesnik so privzeto nastavljeni na javni statični in končni. Razumimo to na primeru

// Koda vmesnika

preizkus paketa javni vmesnik Poskusite {// javni int a = 10 // javni statični končni int a = 10 // statični int a = 0 // končni int a = 10 // int a = 10}
  • Vse zgornje izjave so resnične in veljavne znotraj vmesnika.
  • Java vmesnik lahko razširi poljubno število vmesnikov, vendar ga nikoli ne more implementirati.
  • Razred Java lahko izvaja poljubno število vmesnikov.
  • Razred Java ne more implementirati vmesnikov z enakim imenom metode in različnim vrnjenim tipom.
  • Če obstajata dve ali več metod z istim imenom metode, ki obstajajo v več vmesnikih, je dovolj, da metodo enkrat uvedemo. Razumimo to na praktičnem primeru.

// Koda vmesnika

paket isti javni vmesnik A {javni void display ()} // Koda vmesnika isti javni vmesnik B {public void display ()} // Paket kode razreda isti razred iste izvedbe A, B {public void display () {System.out .println ('prikaz podatkov')} public static void main (String [] args) {enako tiskanje = novo isto () print.display ()}}

Izhod:

Dobrodošli v e-izobraževanju Edureka

S tem smo prišli do konca tega članka. Upam, da ste razumeli pomen vmesnika, sintakse, funkcionalnosti, gnezdenja vmesnikov, ključnih točk vmesnika Java in operacij, ki se izvajajo z njihovo uporabo.

Zdaj, ko ste razumeli osnove Jave, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je namenjen študentom in strokovnjakom, ki želijo biti razvijalec Java. Tečaj je zasnovan tako, da vam omogoči uvod v programiranje Java in vas usposobi za osnovne in napredne koncepte Java, skupaj z različnimi Java okviri, kot so Hibernate & Pomlad .

Imate vprašanje za nas? Omenite ga v oddelku za komentarje tega spletnega dnevnika 'Vmesnik Java' in takoj se vam bomo oglasili.