Mis on Java liides ja kuidas seda rakendada?



See artikkel aitab teil põhjalikult käsitleda Java-liidest ja selle funktsionaalsusega seotud erinevaid näiteid.

' Liides on Java programmeerimiskeeles abstraktsiooni saavutamise tase. Java liides aitab keerukuse vähendamine koodis ja lihtsustab loetavus . Selles artiklis selgitan teile Java-liidest järgmise pesa kaudu.

Mis on Java-liides?

Arvuti liides on tuntud kui piir, mis eraldab kahte või enamat süsteemi. See vahetab süsteemi komponentide vahel andmeid, mis võivad anda signaale, käske või protokolle.





java-interface

Java Abstraction pakub konkreetse meetodi funktsionaalsust, varjates meetodi sisse kirjutatud juurutusloogika. Samamoodi on Java liides ka abstraktne klass, mis sisaldab meetodi deklaratsiooni, kuid mitte selle määratlust. Klass rakendab liides abstraktsete meetodite pärimiseks. Koos abstraktsete meetoditega on an liides võib sisaldada ka konstandid, staatilised meetodid, pesastatud liidesed ja vaikemeetodid.



Sarnasused klassi ja liidese vahel.

Liides on täiesti sarnane Java tavalisele klassile. Liides sisaldab abstraktseid meetodeid ja need meetodid on mõeldud rakendamiseks. See protsess on lihtsalt võrdne pärimisega, mis on klassides tavaline. Arutame rohkem sarnasuste üle.

  • Sama mis klassis, võib liides sisaldada ka nii palju meetodeid kui vaja.
  • Sarnaselt klassidele kirjutatakse liides ka a-ga .java laiendusfail.
  • Üllataval kombel on liidese baitkood ilmunud a .klass faili.
  • Liides kuvatakse paketi kujul ja nende vastav baitkood on kataloogis, mis sobib paketi nimega.

Miks me vajame liidest?

Java ei toeta Mitu pärandit, mille tõttu see ei luba klassidel laiendada eksemplaris rohkem kui ühte klassi. Lasteklassid ei saanud pärida mitu vanemat klassi ühel eksemplaril, nagu see tulemuseks on Teemantprobleem. Selle probleemi ületamiseks Liides tutvustatakse. Mõistkem sellest probleemist näite abil.



Oletame, et meil on kaks lennukit, üks saab kanda ainult lennukit reisijad, ainult teine asend. Nüüd peame seda tegema pärima nii kaubalennuki kui ka reisilennuki omadused. Java ei toeta seda lahendust, kuna see lõpeb ebaselgus kahe lennuki vahel.

Kuid kui saate seda võimaldada, pannes Java tundma, et see pärib ühe tasapinna ja rakendamine teises plaanis esinevad meetodid. See on nagu kommertslennuk, mis võtab nii reisijaid kui ka pagasit. Liides on nagu suurema lennuki valmistamine, mis suudaks mõlemad ülesanded üksteise komponentidesse sekkumata, selle asemel, et lihtsalt meetodeid laenata Liidese klass.

// A-klassi kood

paki mitu klassi A {void msg () {System.out.println ('Tere')}}

// B-klassi kood

paki mitu klassi B {void msg () {System.out.println ('Welcome')}}

C-klassi kood

pakett mitu klassi C laiendab A, B {// Java seda ei aktsepteeri, see loob vea ja koodi ei käivitata. public staatiline void main (String args []) {C obj = new C () obj.msg ()}}

Väljund:

Viga. See konkreetne lähenemine loob erandi. Java ei toeta mitut pärandit. Seda viga tuntakse kui Teemantprobleem 

Proovime lahendust liidese abil, Lasteklassid pääsete meetoditele juurde Mitu vanemat klassid ühel eksemplaril.

// Liidese kood

paketi MIS avaliku liidese lahendus {public void Tere () public void Welcome ()}

// Klassi kood

pakett MIS public class classA rakendab lahendust {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Tere tulemast Edurekasse ')} public static void main (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Väljund:

Tere, Maailm
Tere tulemast Edurekasse

Java-liidese deklareerimine: süntaks

liidese liidese_nimi {// deklareeri konstantsed väljad // deklareeri meetodid () // vaikemeetodid}

Vaatame läbi Java liidese näite

Java liidese näide

Koostame Java-liidese baasil lihtsa kalkulaatori.

// Liidese kood

paketi põhioperatsioonid avalik liides matemaatika {public void add () public void sub () public void mul () public void div ()}

// Klassi kood

pakett basicoperations import java.util.Skanner avaliku klassi õpilane1 rakendab matemaatikat {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Lisamise teostamiseks sisestage kaks täisarvu ') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('' + a + 'ja' + b + 'summa on' + s)} @Ava avalik tühine alam () {Skanner kb = uus Skanner (System.in) System.out.println ('Sisestage suvalised kaks täisarvu alamtõkke sooritamiseks') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('' + a + 'ja' + b + 'erinevus on' + s)} @ Alista avalik void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter suvalise kahe täisarvu korrutamine ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' '+ a + ja' + b + 'korrutis on' + s)} @Override public void div () {Skanner kb = new Scanner (System.in) System.out.println ('Sisestage mis tahes kahe täisarvu väärtuste jagamine') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('' + a + 'ja' + b + 'kvoot on' + s)} avalik staatiline void main (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Väljund:

Edasi liikudes õpime Java-liidest pesitsema.

Java-liidese pesitsemine

Liidese pesitsemine on liidese deklareerimine teise sees Olemasolev liides või liidese deklareerimine a sees Klass. Pesastatud liidest tuntakse ka kui Sisemine liides.

Pesastatud liidesele pole juurdepääsu otse . Seega rakendatakse pesitsemist nimeruumide lahendamiseks, rühmitades need omavahel seotud rühmadega Liidesed ja Klassid. Selle protseduuri abilsaame helistada Pesastatud liides läbi Välisklass või Väline liides nimi, millele järgneb a punkt (.) ja Liidese nimi.

Proovime mõne näite põhjal Liidese pesitsemine. Kõigepealt proovime pesitseda a Java liides teise sees Java liides nagu allpool näidatud:

// Liidese kood

pakett Nesti avalik liides OuterInterface {void display () liides InnerInterface {void InnerMethod ()}}

// Klassi kood

pakett Nesti klass NestedInterfaceDemo rakendab OuterInterface.InnerInterface {public void InnerMethod () {int n = 10, t1 = 0, t2 = 1 System.out.print ('First' + n + 'tingimused:') jaoks (int i = 1 i & lt = n ++ i) {System.out.print (t1 + '+') int summa = t1 + t2 t1 = t2 t2 = summa} System.out.println ('nPrindimine sisestatud pesastatud meetodi kaudu ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Väljund:

Esimesed 10 terminit: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Printimine pesastatud InnerInterface'i meetodilt ...!

Proovime nüüd pesitseda a Java liides sees a Java klass.

mis on .formaat pütoonis

// Liidese kood

pakett Nest2 avalik klass EdurekaClass {liides EdurekaInterface {void NestedMethod ()}}

// Klassi kood

pakett Nest2 klass NestedInterfaceDemo2 rakendab EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' bait [] strAsByteArray = input.getBytes () bait [] result = new byte [strAsByteArray.lengthByte] for int int = 0 .length i ++) result [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (new String (result))} public staatiline void main (String args []) {EdurekaClass.EdurekaInterface obj = new NestedInterfaceDemo2 () obj.NestedMethod ()}}

Väljund:

akerudE

Kuigi liides näeb välja peaaegu sarnane klassiga, on nende vahel mõningaid erinevusi. Arutagem nende erinevuste üle.

Java-klassi ja Java-liidese erinevus

LIIDES KLASS
Toetab mitmekordset pärimist Ei toeta mitmekordset pärimist
Tal pole andmeliikmeid Sisaldab andmeliikmeid
Ei oma Konstruktoreid Sisaldab konstruktoreid
Sisaldab mittetäielikke liikmeid (allkirjaliige) Sisaldab nii täielikke (abstraktseid) kui ka mittetäielikke liikmeid
Sellel pole juurdepääsu modifikaatoreid Sisaldab juurdepääsu modifikaatoreid
Liidesel pole staatilisi liikmeid Klassi kõik liikmed on staatilised

Java liidese eelised ja puudused

Eelised:

  • Java liides toetab Mitmekordne pärand.
  • Java liides võimaldab programmeerijatel keerukaid programmeerimisviise lahustada ja lihtsustada sõltuvused objektide vahel.
  • Java liides teeb andmeliikmed ja meetodid vabalt seotud rakenduses.

Puudused:

  • Java liidese kasutamine vähendab täitmise kiirus taotluse.
  • Rakenduses olevaid Java-liideseid kasutatakse kas suures ulatuses korduvalt või ei kasutata üldse.

Java liidese põhipunktid

  • Ühelgi liideses deklareeritud meetodil pole keha, mis paneks selle täielikku abstraktsiooni pakkuma.
  • Liidese objekti pole võimalik luua. Seega ei ole liidese instantsimine võimalik.
  • Klass saab liidese rakendada märksõna tööriistade abil. Vaatame seda näite kaudu.

// Liidese kood

pakett extInterface avalik liides extInterface {public void method1 () public void method2 ()}

// Klassi kood

paketi extInterface importimine java.util.Skanneriklass Edureka rakendab extInterface {public void method1 () {System.out.println ('method1 rakendamine') Skanneriskanner = uus Skanner (System.in) System.out.println ('Sisestage number ruutjuure leidmiseks Java-s: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (square) System.out.printf (' Numbri ruutjuur:% f on:% f% n ', ruut, squareRoot)} public void method2 () {System.out.println ('method2 juurutamine')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Väljund:

method1 juurutamine Java-ruudujuure leidmiseks sisestage number: 16 Ruutjuur numbri: 16.0 on: 4.0
  • Klass saab ühe eksemplariga rakendada mitut pärandit. Mõistame seda järgmise koodi kaudu.

// 1. liidese kood

pakett ExtendInt avaliku liidese liides1 {public void armstrong ()}

// Liidese 2 kood

pakett ExtendInt avaliku liidese liides2 {public void prime ()} // klassikood pakett ExtendInt public class Edureka2 rakendab liidest1, liidest2 {public void armstrong () {int c = 0, a, temp int n = 153 // sisendtemp = n while (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a)} if (temp == c) System.out.println ('armstrong number') muu System.out.println ('Pole jõuline number') System.out.println ('Laienemine liidesele 1')} public void prime () {int i, m = 0, lipp = 0 int n = 3 // sisend m = n / 2, kui (n == 0 || n == 1) {System.out.println (n + 'pole algarv')} else {for (i = 2i & lt = mi ++) {if (n% i == 0) {Süsteem .out.println (n + 'ei ole algarv') lipp = 1 murd}} if (lipp == 0) {System.out.println (n + 'on algarv ')}} System.out.println (' Laiendamine liidesele 2 ')} public static void main (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}

Väljund:

3 on peaarv, mis laieneb liidesele 2, armstrongi number, laieneb liidesele 1
  • Java liides nõuab deklareeritud muutujate initsialiseerimist deklaratsiooni esitamise ajal.
  • Liidese juurdepääsu modifikaatorid on vaikimisi seatud avalikuks staatiliseks ja lõplikuks. Mõistame seda näite abil

// Liidese kood

paketi testi avalik liides Proovige {// public int a = 10 // public staatiline lõplik int a = 10 // staatiline int a = 0 // final int a = 10 // int a = 10}
  • Kõik ülaltoodud deklaratsioonid on liidese sees tõesed ja kehtivad.
  • Java liides on võimeline laiendama suvalist arvu liideseid, kuid ei saa seda kunagi rakendada.
  • Java klass võib rakendada suvalist arvu liideseid.
  • Java klass ei saa rakendada liideseid sama meetodi nime ja erineva tagastustüübiga.
  • Kui sama meetodinimega meetodeid on kaks või enam, on need olemas mitmes liideses, siis piisab meetodi ühekordsest rakendamisest. Mõistame seda praktilise näitega.

// Liidese kood

pakett sama avalik liides A {public void display ()} // liidese koodi pakett sama avalik liides B {public void display ()} // klassikood pakett sama klass sama tööriistad A, B {public void display () {System.out .println ('andmete kuvamine')} avalik staatiline void main (string [] args) {sama print = uus sama () print.display ()}}

Väljund:

Tere tulemast Edureka e-õppesse

Sellega jõuame selle artikli lõpuni. Loodan, et olete aru saanud liidese, süntaksi, funktsionaalsuse, liidese pesitsemise, Java-liidese põhipunktide ja nende abil tehtavate toimingute olulisusest.

Nüüd, kui olete Java põhitõdedest aru saanud, vaadake järgmist autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud õpilastele ja spetsialistidele, kes soovivad olla Java arendajad. Kursus on mõeldud selleks, et anda Java-programmeerimisele edukas algus ja õpetada teid nii Java-põhiprogrammide kui ka täiustatud kontseptsioonide ning erinevate Java-raamistike jaoks, nagu näiteks talveunerežiim ja Kevad .

Kas teil on meile küsimus? Mainige seda selle Java Java liidese ajaveebi kommentaaride osas ja võtame teiega ühendust niipea kui võimalik.