Mikä on Java-käyttöliittymä ja miten se toteutetaan?



Tämä artikkeli auttaa sinua käsittelemään kattavasti Java-käyttöliittymää ja sen toiminnallisuuteen liittyviä erityyppisiä esimerkkejä.

' Käyttöliittymä on edistynyt taso abstraktion saavuttamiseksi Java-ohjelmointikielessä. Java-käyttöliittymä auttaa monimutkaisuuden vähentäminen koodissa ja yksinkertaistaa luettavuus . Tässä artikkelissa selitän sinulle Java-käyttöliittymän seuraavan telakan kautta.

Mikä on Java-käyttöliittymä?

Tietokoneliitäntä tunnetaan rajana, joka erottaa kaksi tai useampia järjestelmiä. Se vaihtaa tietoja järjestelmän komponenttien välillä, mikä voi antaa signaaleja, komentoja tai protokollia.





java-interface

Java Abstraction tarjoaa tietyn menetelmän toiminnallisuuden piilottamalla menetelmän sisään kirjoitetun toteutuslogiikan. Samoin Java-käyttöliittymä on myös abstrakti luokka, joka sisältää Method Declaration -menetelmän, mutta ei sen määritelmää. Luokka työvälineet käyttöliittymä abstraktien menetelmien perimiseksi. Abstraktien menetelmien ohella käyttöliittymä voi myös sisältää vakiot, staattiset menetelmät, sisäkkäiset rajapinnat ja oletusmenetelmät.



Luokan ja käyttöliittymän yhtäläisyydet.

Käyttöliittymä on täysin samanlainen kuin tavallinen Java-luokka. Rajapinta sisältää abstraktit menetelmät ja nämä menetelmät on suunniteltu toteutettaviksi. Tämä prosessi on vain yhtä suuri kuin perintö, mikä on normaalia luokissa. Keskustelemme lisää samankaltaisuuksista.

  • Sama kuin luokka, käyttöliittymä voi sisältää myös niin monta menetelmää kuin tarvitaan.
  • Sarjan tapaan käyttöliittymä kirjoitetaan myös a: lla .java tiedostotunniste.
  • Yllättäen liitännän tavukoodi on ilmestynyt a .luokka tiedosto.
  • Rajapinta näytetään paketin muodossa, ja niiden vastaava tavukoodi on hakemistossa, joka vastaa paketin nimeä.

Miksi tarvitsemme käyttöliittymän?

Java ei tue Useita perintöjä, minkä vuoksi se ei salli luokkien laajentaa useampaa kuin yhtä luokkaa ilmentymässä. Lasten luokat ei voinut periä useita vanhempien luokkia yhdellä kertaa, koska se johtaa Timanttiongelma. Tämän ongelman voittamiseksi Käyttöliittymä otetaan käyttöön. Ymmärretään tämä ongelma esimerkin avulla.



Oletetaan, että meillä on kaksi tasoa, yksi voi kuljettaa vain matkustajat, vain toinen asentoon. Nyt meidän on periä sekä rahtikoneen että matkustajakoneen ominaisuudet. Java ei tue tätä ratkaisua, koska se päätyy epäselvyys kahden koneen välillä.

Mutta jos voit tehdä sen mahdolliseksi tekemällä Java tuntemaan, että se perii yhden tason ja täytäntöönpano toisella tasolla olevat menetelmät. Se on kuin kaupallinen lentokone, joka vie sekä matkustajat että rahtimatkatavarat. Liitäntä on kuin tehdä isompi taso, joka voisi tehdä molemmat tehtävät häiritsemättä toistensa komponentteja, vaan vain lainata menetelmät Liitäntäluokka.

// luokan A koodi

pakkaa useita luokan A {void msg () {System.out.println ('Hello')}}

// luokan B koodi

pakkaa useita luokan B {void msg () {System.out.println ('Welcome')}}

Luokan C koodi

istunnonhallinta java-verkkosovelluksessa
paketti useita luokan C laajennuksia A, B {// Java ei hyväksy tätä, se heittää virheen ja koodia ei suoriteta. public staattinen void main (String args []) {C obj = new C () obj.msg ()}}

Tuotos:

Virhe. Tämä erityinen lähestymistapa aiheuttaa poikkeuksen. Java ei tue useita perintöjä. Tämä virhe tunnetaan nimellä Timanttiongelma 

Kokeile ratkaisua käyttöliittymän avulla, Lasten luokat voi käyttää menetelmiä osoitteesta Useita vanhempia luokat yhdessä instanssissa.

// Liitäntäkoodi

paketti MIS julkisen käyttöliittymän ratkaisu {public void Hello () public void Welcome ()}

// Luokkakoodi

paketti MIS public class classA toteuttaa ratkaisun {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Welcome to Edureka ')} public static void main (Merkkijono [] argumentit) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Tuotos:

Hei maailma
Tervetuloa Edurekaan

Java-käyttöliittymän julistaminen: Syntaksi

käyttöliittymän käyttöliittymän_nimi {// julistaa vakiokentät // julistaa metodit () // oletustavat}

Käy läpi Java-käyttöliittymän esimerkki

Esimerkki Java-käyttöliittymästä

Luodaan yksinkertainen Java-käyttöliittymään perustuva laskin.

// Liitäntäkoodi

paketin perustoiminnot julkinen käyttöliittymä matematiikka {public void add () public void sub () public void mul () public void div ()}

// Luokkakoodi

package basicoperations import java.util.Scanner public class student1 toteuttaa matematiikkaa {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Lisää kaksi kokonaislukua lisäyksen suorittamiseksi') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Summa' + a + 'ja' + b + 'on' + s)} @Override public void sub () {Skanneri kb = uusi skanneri (System.in) System.out.println ('Syötä mikä tahansa kaksi kokonaislukua, jotta alitoiminto suoritetaan') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('' + a + 'ja' + b + 'ero on' + s)} @Override public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter mikä tahansa kahden kokonaisluvun kertolasku ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' + a +: n ja '+ b +': n tulo on '+ s)} @Override public void div () {Skanneri kb = uusi Skanneri (System.in) System.out.println ('Anna mikä tahansa kahden kokonaisluvun arvo -jako') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Määritin' + a + 'ja' + b + 'on' + s)} julkinen staattinen tyhjä pää (Merkkijono [] argumentit) {opiskelija1 Edureka1 = uusi opiskelija1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Tuotos:

Edistymällä eteenpäin opimme pesäämään Java-käyttöliittymän.

Java-käyttöliittymän pesiminen

Liitännän sisäkkäin on prosessi, jossa ilmoitetaan käyttöliittymä toisen sisällä Olemassa oleva käyttöliittymä tai julistamalla käyttöliittymä a: n sisällä Luokka. Sisäkkäinen käyttöliittymä tunnetaan myös nimellä Sisäinen liitäntä.

Sisäkkäistä käyttöliittymää ei voi käyttää suoraan . Pesiminen on siis toteutettu nimitilojen ratkaisemiseksi ryhmittelemällä ne niihin liittyviin Liitännät ja Luokat. Tällä menettelyllävoimme soittaa Sisäkkäinen käyttöliittymä läpi Ulkoluokka tai Ulkoliitäntä nimi, jota seuraa a piste (.) ja Liitännän nimi.

Kokeile joitain esimerkkejä, jotka perustuvat Liitännän sisäkkäin. Yritetään ensin pestä a Java-käyttöliittymä toisen sisällä Java-käyttöliittymä kuten alla:

// Liitäntäkoodi

package Nest julkinen käyttöliittymä OuterInterface {void display () interface InnerInterface {void InnerMethod ()}}

// Luokkakoodi

package Nest-luokka NestedInterfaceDemo toteuttaa OuterInterface.InnerInterface {public void InnerMethod () {int n = 10, t1 = 0, t2 = 1 System.out.print ('First' + n + 'termit:') varten (int i = 1 i & lt = n ++ i) {System.out.print (t1 + '+') int summa = t1 + t2 t1 = t2 t2 = summa} System.out.println ('nTulostaa sisäkkäisen sisäisen käyttöliittymän menetelmästä ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Tuotos:

Ensimmäiset 10 termiä: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Tulostus sisäkkäisestä sisäpinnasta ...!

Yritetään nyt pestä a Java-käyttöliittymä sisällä a Java-luokka.

// Liitäntäkoodi

paketti Nest2 public class EdurekaClass {käyttöliittymä EdurekaInterface {void NestedMethod ()}}

// Luokkakoodi

paketti Nest2-luokka NestedInterfaceDemo2 toteuttaa EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' tavu [] strAsByteArray = input.getBytes () tavu [] tulos = uusi tavu [strAsByteArray.lengthByte] intstrAA 0 i .length i ++) tulos [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (uusi merkkijono (tulos))} public static void main (String args []) {EdurekaClass.EdurekaInterface obj = new NestedInterfaceDemo2 () obj.NestedMethod ()}}

Tuotos:

akerudE

Vaikka käyttöliittymä näyttää melkein samanlaiselta kuin luokka, niiden välillä on joitain eroja, keskustellaan heidän eroista.

Ero Java-luokan ja Java-käyttöliittymän välillä

KÄYTTÖLIITTYMÄ LUOKKA
Tukee useita perintöominaisuuksia Ei tue moniperintöä
Ei Data-jäseniä Sisältää datajäsenet
Ei rakentajia Sisältää rakentajat
Sisältää keskeneräiset jäsenet (allekirjoittajajäsen) Sisältää sekä täydelliset (tiivistelmä) että keskeneräiset jäsenet
Ei käyttöoikeuksien muokkaajia Sisältää pääsymodifikaattorit
Käyttöliittymässä ei ole staattisia jäseniä Luokalla on kaikki jäsenet staattisina

Java-käyttöliittymän edut ja haitat

Edut:

  • Java-käyttöliittymä tukee Moninkertainen perintö.
  • Java-käyttöliittymän avulla ohjelmoijat voivat hajottaa monimutkaiset ohjelmointitavat ja yksinkertaistaa riippuvuudet esineiden välillä.
  • Java-käyttöliittymä tekee tietojen jäsenet ja menetelmiä löyhästi kytkettävässä sovelluksessa.

Haitat:

  • Java-käyttöliittymän käyttö tuo alas suoritusnopeus sovelluksen.
  • Java-rajapintoja sovelluksessa käytetään joko toistuvasti suuressa määrin tai niitä ei käytetä lainkaan.

Avainkohdat Java-käyttöliittymässä

  • Mikään käyttöliittymässä ilmoitetuista menetelmistä ei sisällä runkoa, joka saa sen aikaansaamaan täydellisen abstraktion.
  • Käyttöliittymän objektia ei voida luoda. Näin ollen rajapinnan välitön välitys ei ole mahdollista.
  • Luokka voi toteuttaa käyttöliittymän käyttämällä avainsanatyökaluja. Katsotaanpa tämä esimerkin avulla.

// Liitäntäkoodi

paketti extInterface julkinen käyttöliittymä extInterface {public void method1 () public void method2 ()}

// Luokkakoodi

paketti extInterface tuonti java.util.Scanner-luokka Edureka toteuttaa extInterface {public void method1 () {System.out.println ('method1-toteutus') Skanneriskanneri = uusi Skanneri (System.in) System.out.println ('Syötä numero neliöjuuren löytäminen Java: sta: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (square) System.out.printf (' Numeron neliöjuuri:% f on:% f% n ', neliö, squareRoot)} public void method2 () {System.out.println ('method2-toteutus')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Tuotos:

method1: n toteutus Syötä numero etsimään neliöjuuri Java: sta 16 Numeron neliöjuuri: 16.0 on: 4,0
  • Luokka voi toteuttaa useita perintöjä yhdessä instanssissa. Ymmärretään se seuraavan koodin avulla.

// Liitännän 1 koodi

paketti ExtendInt public interface Interface1 {public void armstrong ()}

// Liitännän 2 koodi

paketti ExtendInt public interface Interface2 {public void prime ()} // Luokkakoodipaketti ExtendInt public class Edureka2 toteuttaa 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 ('Ei itsepäinen numero') System.out.println ('Laajentuminen käyttöliittymään 1')} public void prime () {int i, m = 0, flag = 0 int n = 3 // tulo m = n / 2 jos (n == 0 || n == 1) {System.out.println (n + 'ei ole alkuluku')} else {for (i = 2i & lt = mi ++) {if (n% i == 0) {System .out.println (n + 'ei ole alkuluku') lippu = 1 tauko}} if (lippu == 0) {System.out.println (n + 'on alkuluku')}} System.out.println ('Laajentaminen liitäntään 2 ')} public static void main (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}

Tuotos:

3 on alkuluku, joka ulottuu käyttöliittymään 2, itsepintainen numero, jatkuu käyttöliittymään 1
  • Java-käyttöliittymä vaatii ilmoitettujen muuttujien alustamisen ilmoituksen tekohetkellä.
  • Käyttöliittymän pääsynmuokkaajat ovat oletusarvoisesti julkisia staattisia ja lopullisia. Ymmärretään tämä esimerkillä

// Liitäntäkoodi

pakettitesti julkinen käyttöliittymä Kokeile {// public int a = 10 // public static final int a = 10 // static int a = 0 // final int a = 10 // int a = 10}
  • Kaikki yllä olevat ilmoitukset ovat totta ja päteviä käyttöliittymän sisällä.
  • Java-käyttöliittymä pystyy laajentamaan mitä tahansa määrää rajapintoja, mutta ei koskaan voi toteuttaa sitä.
  • Java-luokka voi toteuttaa minkä tahansa määrän rajapintoja.
  • Java-luokka ei voi toteuttaa käyttöliittymiä samalla menetelmällä ja eri palautustyypillä.
  • Jos on olemassa useita tai useampia menetelmiä samalla menetelmällä, ne ovat olemassa useissa rajapinnoissa, menetelmän käyttöönotto kerran riittää. Ymmärretään tämä käytännön esimerkillä.

// Liitäntäkoodi

pakkaa sama julkinen käyttöliittymä A {public void display ()} // Liitäntäkoodipaketti sama julkinen käyttöliittymä B {public void display ()} // Luokkakoodipaketti sama luokan sama työkalu A, B {public void display () {System.out .println ('tietojen näyttäminen')} public staattinen void main (String [] args) {same print = new same () print.display ()}}

Tuotos:

Tervetuloa Edureka E-Learningiin

Tämän avulla olemme päässeet tämän artikkelin loppuun. Toivon, että olet ymmärtänyt käyttöliittymän, syntaksin, toiminnallisuuden, käyttöliittymän pesinnän, Java-käyttöliittymän avainkohdat ja niiden avulla suoritettujen toimintojen merkityksen.

Nyt kun olet ymmärtänyt Java-perusteet, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssi on suunniteltu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä. Kurssi on suunniteltu antamaan sinulle etumatka Java-ohjelmointiin ja kouluttamaan sekä ydin- että edistyneitä Java-käsitteitä sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & kevät .

Onko sinulla kysymys meille? Mainitse se tämän Java Interface -blogin kommenttiosassa, niin otamme sinuun yhteyttä mahdollisimman pian.

<> operaattori neliöissä