Kas ir Java saskarne un kā to ieviest?



Šis raksts jums palīdzēs ar visaptverošu pieeju Java saskarnei un dažāda veida piemēriem, kas saistīti ar tā funkcionalitāti.

' Saskarne ir uzlabots līmenis abstrakcijas sasniegšanai Java programmēšanas valodā. Java saskarne palīdz sarežģītības samazināšana kodā un vienkāršo lasāmība . Šajā rakstā es jums izskaidrošu Java saskarni, izmantojot šo kontaktligzdu.

Kas ir Java saskarne?

Datora saskarne ir pazīstama kā robeža, kas atdala divas vai vairākas sistēmas. Tas apmainās ar datiem starp sistēmas komponentiem, kas varētu dot signālus, komandas vai protokolus.





java-interface

Java abstrakcija nodrošina noteiktas metodes funkcionalitāti, slēpjot metodes iekšpusē ierakstīto ieviešanas loģiku. Tāpat Java saskarne ir arī abstrakta klase, kas ietver Metode deklarāciju, bet ne tās definīciju. Klase īsteno saskarne, lai mantotu abstraktās metodes. Paralēli abstraktajām metodēm interfeiss var ietvert arī konstantes, statiskās metodes, ligzdotās saskarnes un noklusējuma metodes.



Klases un saskarnes līdzības.

Interfeiss ir pilnīgi līdzīgs Java parastajai klasei. Saskarne ietver abstraktas metodes, un šīs metodes ir paredzētas ieviešanai. Šis process ir tikai vienāds ar mantojumu, kas ir normāli, ja runa ir par klasēm. Mēs vairāk apspriedīsim par līdzībām.

apache dzirkstele, salīdzinot ar hadoop mapreduce
  • Tāpat kā klasē, saskarnē var būt arī tik daudz metožu, cik nepieciešams.
  • Līdzīgi kā klasēs, interfeiss tiek rakstīts arī ar a .java paplašinājuma fails.
  • Pārsteidzoši, ka saskarnes baitkods būs parādījies .klase failu.
  • Interfeiss tiek parādīts paketes formā, un to attiecīgais baitkods atrodas direktorijā, kas atbilst pakotnes nosaukumam.

Kāpēc mums nepieciešama saskarne?

Java neatbalsta Vairāki mantojumi, kuru dēļ tas neļaus klasēm paplašināt vairāk nekā vienu klasi instancē. Bērnu nodarbības nevarēja pārmantot vairākas vecāku klases vienā instancē, kā rezultātā Dimanta problēma. Lai pārvarētu šo problēmu, Saskarne tiek ieviests. Ļaujiet mums saprast šo problēmu, izmantojot piemēru.



Pieņemsim, ka mums ir divas lidmašīnas, vienu var pārvadāt tikai pasažieri, tikai otrs pozīciju. Tagad mums tas ir jādara mantot gan kravas lidmašīnas, gan pasažieru lidmašīnas īpašības. Java neatbalstītu šo risinājumu, jo tas nonāk neskaidrība starp abām lidmašīnām.

Bet, ja jūs varat to izdarīt, liekot Java justies, ka tā pārmanto vienu plakni un īstenošana citas plaknes metodes. Tā ir kā komerciāla lidmašīna, kas ved gan pasažierus, gan kravas bagāžu. Saskarne ir kā izveidot lielāku plakni, kas varētu veikt abus uzdevumus, netraucējot viens otra komponentus, tā vietā vienkārši aizņemoties metodes no Saskarnes klase.

// A klases kods

pakotne vairākas A klases {void msg () {System.out.println ('Sveiki')}}

// B klases kods

pakotne vairākām B klasēm {void msg () {System.out.println ('Welcome')}}

C klases kods

pakete vairāku C klase paplašina A, B {// Java to nepieņems, tas radīs kļūdu un kods netiks izpildīts. public static void main (String args []) {C obj = new C () obj.msg ()}}

Izeja:

Kļūda. Šī konkrētā pieeja rada izņēmumu. Java neatbalsta vairākus mantojumus. Šī kļūda ir pazīstama kā Dimanta problēma 

Izmēģināsim risinājumu, izmantojot saskarni, Bērnu nodarbības var piekļūt metodēm no Vairāki vecāki klases vienā instancē.

// Saskarnes kods

pakotnes MIS publiskās saskarnes risinājums {public void Hello () public void Welcome ()}

// Klases kods

pakete MIS public class classA ievieš risinājumu {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Laipni lūdzam Edureka ')} public static void main (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Izeja:

Sveika pasaule
Laipni lūdzam Edureka

Java saskarnes deklarēšana: sintakse

interfeisa interfeiss_nosaukums {// deklarē nemainīgus laukus // deklarē metodes () // noklusējuma metodes}

Apskatīsim piemēru Java saskarnē

Java saskarnes piemērs

Izveidosim vienkāršu kalkulatoru, kura pamatā ir Java saskarne.

// Saskarnes kods

paketes pamatoperācijas publiskā saskarne matemātika {public void add () public void sub () public void mul () public void div ()}

// Klases kods

pakete basicoperations importēt java.util.Scanner public class students1 īsteno matemātiku {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Ievadiet jebkuras divas skaitļa vērtības, lai veiktu pievienošanu') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('' + a + 'un' + b + 'summa ir' + s summa)} @ Pārvarēt public void sub () {Skeneris kb = jauns Skeneris (System.in) System.out.println ('Ievadiet jebkuras divas veselas skaitļa vērtības, lai veiktu apakšsummu') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('' + a + 'un' + b + 'atšķirība ir' + s)} @Orride public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter jebkura divu veselu skaitļu vērtību reizināšana ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' '+ a + un' + b + 'produkts ir' + s)} @Orride public void div () {Skeneris kb = jauns Skeneris (System.in) System.out.println ('Ievadiet jebkuru divu veselu skaitļu vērtību dalījumu') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('' + a + 'un' + b + 'koeficients ir' + s)} public static void main (String [] args) {students1 Edureka1 = jauns students1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Izeja:

Tālāk virzoties, mēs iemācīsimies ligzdot Java saskarni.

Java saskarnes ligzdošana

Saskarnes ligzdošana ir interfeisa deklarēšanas process citā Esošā saskarne vai interfeisa deklarēšana iekšpusē a Klase. Ligzdotā saskarne ir pazīstama arī kā Iekšējā saskarne.

Ligzdotajai saskarnei nevar piekļūt tieši . Tādējādi ligzdošana tiek ieviesta, lai atrisinātu nosaukumvietas, grupējot tās ar tām saistītajām Saskarnes un Klases. Ar šo procedūrumēs varam izsaukt Ligzdota saskarne caur Ārējā klase vai Ārējā saskarne nosaukums, kam seko a punkts (.) , un Saskarnes nosaukums.

Izmēģināsim dažus piemērus, kuru pamatā ir Saskarnes ligzdošana. Vispirms mēģināsim ligzdot a Java saskarne iekšā citā Java saskarne kā parādīts zemāk:

// Saskarnes kods

paketes Nest publiskā saskarne OuterInterface {void display () saskarne InnerInterface {void InnerMethod ()}}

// Klases kods

pakete Nest klase NestedInterfaceDemo ievieš OuterInterface.InnerInterface {public void InnerMethod () {int n = 10, t1 = 0, t2 = 1 System.out.print ('Pirmie' + n + 'nosacījumi:') domēnam (int i = 1 i & lt = n ++ i) {System.out.print (t1 + '+') int summa = t1 + t2 t1 = t2 t2 = summa} System.out.println ('nDrukāšana no Nested InnerInterface metodes ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Izeja:

Pirmie 10 termini: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Drukāšana no Nested InnerInterface metodes ...!

Tagad mēģināsim ligzdot a Java saskarne iekšpusē a Java klase.

// Saskarnes kods

pakete Nest2 publiskā klase EdurekaClass {interfeiss EdurekaInterface {void NestedMethod ()}}

// Klases kods

pakete Nest2 klase NestedInterfaceDemo2 ievieš EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' baits [] strAsByteArray = input.getBytes () baits [] rezultāts = jauns baits [strAsByteArray.lengthByte] par (int i = 0 istr. = 0 .length i ++) rezultāts [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (new String (result))} public static void main (String args []) {EdurekaClass.EdurekaInterface obj = new NestedInterfaceDemo2 () obj.NestedMethod ()}}

Izeja:

akerudE

Lai gan saskarne izskatās gandrīz līdzīga klasei, starp tām ir dažas atšķirības. Apspriedīsim viņu atšķirības.

Atšķirība starp Java klasi un Java saskarni

SASKARNE KLASE
Atbalsta vairāku mantojumu Neatbalsta vairākkārtēju mantošanu
Nav datu dalībnieku Ietver datu dalībniekus
Nav konstruktoru Ietver konstruktorus
Ietver nepilnīgus locekļus (paraksta loceklis) Ietver gan pilnīgus (abstraktus), gan nepilnīgus dalībniekus
Nav piekļuves modifikatoru Ietver piekļuves modifikatorus
Saskarnei nav statisku dalībnieku Klasē visi dalībnieki ir statiski

Java saskarnes priekšrocības un trūkumi

Priekšrocības:

  • Java interfeiss atbalsta Daudzkārtējs mantojums.
  • Java saskarne ļauj programmētājiem sadalīt sarežģītās programmēšanas pieejas un vienkāršot atkarības starp objektiem.
  • Java saskarne nodrošina datu dalībnieki un metodes pieteikumā jābūt brīvi savienojamam.

Trūkumi:

  • Java saskarnes izmantošana samazina izpildes ātrums pieteikuma.
  • Java saskarnes lietojumprogrammā tiek vai nu izmantotas atkārtoti lielā mērā, vai arī tās vispār netiek izmantotas.

Galvenie punkti Java saskarnē

  • Nevienai no saskarnē deklarētajām metodēm nav ķermeņa, kas tai nodrošinātu pilnīgu abstrakciju.
  • Saskarnes objektu nav iespējams izveidot. Tādējādi saskarnes instancēšana nav iespējama.
  • Klase var ieviest saskarni, izmantojot atslēgvārdu rīkus. Apskatīsim to, izmantojot piemēru.

// Saskarnes kods

pakete extInterface publiskā saskarne extInterface {public void metode1 () public void metode2 ()}

// Klases kods

paketes extInterface importēšana java.util.Scanner klase Edureka ievieš extInterface {public void method1 () {System.out.println ('method1 ieviešana') Scanner scanner = jauns Scanner (System.in) System.out.println ('Ievadiet numuru atrast Java kvadrātsakni: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (square) System.out.printf (' Skaitļa kvadrātsakne:% f ir:% f% n ', kvadrāts, squareRoot)} public void method2 () {System.out.println ('method2 ieviešana')} public static void main (String arg []) {extInterface obj = new Edureka () obj.met11 ()}}

Izeja:

method1 ieviešana Ievadiet numuru, lai Java atrastu kvadrātsakni: 16 Koka kvadrātsakne: 16.0 ir: 4.0
  • Klase vienā instancē var ieviest vairākus mantojumus. Ļaujiet mums to saprast, izmantojot šo kodu.

// 1. saskarnes kods

pakotne ExtendInt publiskās saskarnes 1. saskarne {public void armstrong ()}

// 2. saskarnes kods

pakete ExtendInt publiskā saskarne 2. saskarne {public void prime ()} // Klases kods pakete ExtendInt publiskā klase Edureka2 ievieš 1. saskarni, 2. saskarni {public void armstrong () {int c = 0, a, temp int n = 153 // ievades temp = n while (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a)} if (temp == c) System.out.println ('armstrong number') cits System.out.println ('Neizteiksmīgs skaitlis') System.out.println ('Paplašināšana uz 1. saskarni')} public void prime () {int i, m = 0, flag = 0 int n = 3 // ievade m = n / 2, ja (n == 0 || n == 1) {System.out.println (n + 'nav galvenais skaitlis')} cits {priekš (i = 2i & lt = mi ++) {if (n% i == 0) {Sistēma .out.println (n + 'nav galvenais skaitlis') flag = 1 break}} if (flag == 0) {System.out.println (n + 'is prime number')}} System.out.println ('Paplašināšana uz 2. saskarni ')} public static void main (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}

Izeja:

3 ir galvenais skaitlis, paplašinot līdz 2. saskarnei, patstāvīgs skaitlis
  • Java interfeiss prasa deklarēto mainīgo inicializēšanu deklarēšanas brīdī.
  • Saskarnes piekļuves modifikatori pēc noklusējuma ir iestatīti kā publiski statiski un galīgi. Ļaujiet mums to saprast ar piemēru

// Saskarnes kods

paketes testa publiskā saskarne Izmēģiniet {// public int a = 10 // public static final int a = 10 // static int a = 0 // final int a = 10 // int a = 10}
  • Visas iepriekš minētās deklarācijas ir patiesas un derīgas saskarnē.
  • Java interfeiss spēj paplašināt jebkuru interfeisu skaitu, taču nekad to nevar ieviest.
  • Java klase var ieviest jebkuru interfeisu skaitu.
  • Java klase nevar ieviest saskarnes ar tādu pašu metodes nosaukumu un atšķirīgu atgriešanās veidu.
  • Ja ir divas vai vairākas metodes ar vienu un to pašu metodes nosaukumu, tās pastāv vairākās saskarnēs, tad pietiek ar metodes ieviešanu vienreiz. Ļaujiet mums to saprast ar praktisku piemēru.

// Saskarnes kods

pakotne tāda pati publiskā saskarne A {public void display ()} // Saskarnes koda pakotne tā pati publiskā saskarne B {public void display ()} // Klases koda pakotne tās pašas klases tās pašas ierīces A, B {public void display () {System.out .println ('datu parādīšana')} public static void main (String [] args) {same print = new same () print.display ()}}

Izeja:

Laipni lūdzam Edureka e-apmācībā

Ar to mēs esam nonākuši pie šī raksta beigām. Es ceru, ka esat sapratis saskarnes, sintakses, funkcionalitātes, saskarnes ligzdošanas, Java saskarnes galveno punktu un to izmantošanas darbību nozīmi.

Tagad, kad esat sapratis Java pamatus, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji. Kurss ir paredzēts, lai dotu jums iespēju sākt Java programmēšanu un apmācīt gan pamata, gan uzlabotas Java koncepcijas, kā arī dažādas Java struktūras, piemēram, hibernēt un Pavasaris .

Vai mums ir jautājums? Pieminiet to šī “Java Interface” emuāra komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.