Ce este interfața în Java și cum să o implementez?



Acest articol vă va ajuta cu o abordare cuprinzătoare a interfeței Java și a diferitelor tipuri de exemple legate de funcționalitatea sa.

' Interfață este un nivel avansat de realizare a abstractizării în limbajul de programare Java. Interfața Java ajută în reducerea complexității în cod și simplifică lizibilitate . În acest articol, vă voi explica interfața Java prin următorul dosar.

Ce este o interfață Java?

Interfață computer este cunoscut sub numele de graniță care separă două sau mai multe sisteme. Schimbă date între componentele unui sistem care ar putea semnala, comanda sau protocoalele.





este un master considerat postuniversitar

java-interface

Java Abstraction oferă funcționalitatea unei anumite metode prin ascunderea logicii de implementare scrise în interiorul metodei. În mod similar, interfața Java este, de asemenea, o clasă abstractă care include declarația metodică, dar nu și definiția acesteia. O clasa unelte o interfață pentru a moșteni metodele abstracte. Alături de metodele abstracte, an interfață poate include, de asemenea constante, metode statice, interfețe imbricate și metode implicite.



Asemănări între o clasă și o interfață.

O interfață este complet similară cu o clasă normală în Java. O interfață include metode abstracte și aceste metode sunt concepute pentru a fi implementate. Acest proces este doar egal cu moștenirea, ceea ce este normal atunci când vine vorba de clase. Vom discuta mai multe despre asemănări.

  • La fel ca o clasă, o interfață poate conține, de asemenea, cât de multe metode este necesar.
  • Similar claselor, interfața este scrisă și cu un .java fișier extensie.
  • În mod surprinzător, codul secundar pentru o interfață va fi apărut într-un .clasă fişier.
  • O interfață este afișată sub forma unui pachet, iar codul de octet respectiv se află într-un director care se potrivește cu numele pachetului.

De ce avem nevoie de o interfață?

Java nu acceptă Moșteniri multiple, din care cauză, nu va permite claselor să extindă mai mult de o clasă la o instanță. Cursuri pentru copii nu a putut moșteni proprietățile mai multe clase de părinți la o singură instanță, așa cum rezultă Diamond Problem. Pentru a depăși această problemă, Interfață este introdus. Să înțelegem această problemă printr-un exemplu.



Să presupunem că avem două planuri, unul poate transporta numai pasageri, numai celălalt poziţie. Acum, trebuie moşteni proprietățile atât ale avionului de marfă, cât și ale avionului de pasageri. Java nu ar accepta această soluție, deoarece va ajunge în ambiguitate între cele două planuri.

Dar, dacă puteți face acest lucru, făcând Java să simtă că moștenește un singur plan și implementarea metodele prezente în celălalt plan. Este ca un avion comercial care transportă atât pasageri, cât și bagaje de marfă. Interfața este ca și cum ați face un plan mai mare care ar putea face ambele sarcini fără a interfera cu componentele unii cu alții, ci doar împrumutând metodele de la Clasa de interfață.

// Codul clasei A

pachet mai multe clase A {void msg () {System.out.println ('Hello')}}

// Codul clasei B.

pachet mai multe clase B {void msg () {System.out.println ('Welcome')}}

Codul clasei C.

pachetul de clase multiple C extinde A, B {// Acest lucru nu va fi acceptat de Java, va arunca o eroare și codul nu va fi executat. public static void main (String args []) {C obj = new C () obj.msg ()}}

Ieșire:

Eroare. Această abordare specială aruncă o excepție. Java nu acceptă moșteniri multiple. Această eroare este cunoscută sub numele de Diamond Problem 

Să încercăm o soluție folosind o interfață, Cursuri pentru copii poate accesa metodele de la Părinte multiplu cursuri la o singură instanță.

// Cod de interfață

pachet soluție de interfață publică MIS {public void Bună ziua () public void Bine ați venit ()}

// Codul clasei

pachet MIS public class classA implementează soluția {public void Bună ziua () {java.lang.System.out.println ('Hello world')} public void Bine ați venit () {java.lang.System.out.println ('Bine ați venit la Edureka ')} public static void main (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

Ieșire:

Salut Lume
Bine ați venit la Edureka

Declararea unei interfețe Java: sintaxă

interfață nume_interfață {// declara câmpuri constante // declară metode () // metode implicite}

Să parcurgem un exemplu despre interfața Java

Exemplu de interfață Java

Să creăm un Calculator simplu bazat pe interfața Java.

// Cod de interfață

pachet operațiuni de bază interfață publică matematică {public void add () public void sub () public void mul () public void div ()}

// Codul clasei

package basicoperations import java.util.Scanner public class student1 implementes maths {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Introduceți orice două valori întregi pentru a efectua adăugarea') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Suma de' + a + 'și' + b + 'este' + s)} @Override public void sub () {Scanner kb = Scanner nou (System.in) System.out.println ('Introduceți orice două valori întregi pentru a efectua substracția') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('Diferența dintre' + a + 'și' + b + 'este' + s)} @Override public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter orice două valori întregi multiplicare ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' Produsul lui '+ a +' și '+ b +' este '+ s)} @Override public void div () {Scanner kb = Scanner nou (System.in) System.out.println ('Introduceți orice divizie de două valori întregi') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Quotient of' + a + 'and' + b + 'is' + s)} public static void main (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}

Ieșire:

convertirea dublului în int în java

Înaintând mai departe, vom învăța să cuibărim o interfață Java.

Cuibărirea interfeței Java

Cuibărirea interfeței este un proces de declarare a unei interfețe în interiorul alteia Interfață existentă sau declararea unei interfețe în interiorul unui Clasă. Interfața imbricată este, de asemenea, cunoscută sub numele de Interfață interioară.

Interfața imbricată nu poate fi accesată direct . Prin urmare, Nesting este implementat pentru a rezolva spațiile de nume, grupându-le cu cele conexe Interfețe și Clase. Prin această procedură,putem numi Interfață imbricată prin Clasa exterioară sau Interfață exterioară nume urmat de a punct (.) , și Numele interfeței.

Să încercăm câteva exemple bazate pe Cuibărirea interfeței. Mai întâi, să încercăm să cuibărim un Interfață Java în interiorul altuia Interfață Java așa cum se arată mai jos:

// Cod de interfață

pachet Nest interfață publică OuterInterface {void display () interface InnerInterface {void InnerMethod ()}}

// Codul clasei

pachet Clasa Nest NestedInterfaceDemo implementează 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 ('nPrinting from Nested InnerInterface method ...! n ')} public static void main (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

Ieșire:

Primii 10 termeni: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Imprimarea din metoda Interfață interioară imbricată ...!

Acum, să încercăm să cuibărim un Interfață Java în interiorul unui Clasa Java.

// Cod de interfață

pachet Nest2 public class EdurekaClass {interface EdurekaInterface {void NestedMethod ()}}

// Codul clasei

pachetul clasa Nest2 NestedInterfaceDemo2 implementează EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' byte [] strAsByteArray = input.getBytes () byte [] result = new byte [strAsByteArray.length] for (int i = 0 i & i .length i ++) result [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 ()}}

Ieșire:

akerudE

Deși o interfață arată aproape similară cu o clasă, există unele diferențe între ele. Să discutăm despre diferențele lor.

Diferența dintre clasa Java și interfața Java

INTERFATA CLASĂ
Sprijină moștenirea multiplă Nu acceptă moștenirea multiplă
Nu are membri de date Include membrii de date
Nu are constructori Include constructori
Include membri incompleti (membru semnat) Include atât membrii completi (rezumat), cât și membrii incompleti
Nu are modificatori de acces Include modificatori de acces
Interfața nu are membri statici Clasa are toți membrii ei ca fiind statici

Avantajele și dezavantajele interfeței Java

Avantaje:

  • Suportă interfața Java Moștenirea multiplă.
  • Interfața Java permite programatorilor să descompună abordările complexe de programare și să simplifice dependențe între obiecte.
  • Interfața Java face membrii de date și metode într-o aplicație care trebuie cuplată slab.

Dezavantaje:

  • Folosirea interfeței Java reduce viteza de execuție a cererii.
  • Interfețele Java din aplicație sunt fie utilizate în mod repetat în mare măsură, fie greu folosite deloc.

Puncte cheie pe interfața Java

  • Niciuna dintre metodele declarate în interfață nu are un corp care să o facă să ofere o abstractizare completă.
  • Nu este posibil să creați un obiect al unei interfețe. Prin urmare, Instanțierea unei interfețe nu este posibilă.
  • O clasă poate implementa o interfață utilizând instrumentele de cuvinte cheie. Să vedem acest lucru printr-un exemplu.

// Cod de interfață

pachet extInterface interfață publică extInterface {public void method1 () public void method2 ()}

// Codul clasei

pachetul extInterface import clasa java.util.Scanner Edureka implementează extInterface {public void method1 () {System.out.println ('implementarea metodei 1') Scanner scanner = Scanner nou (System.in) System.out.println ('Introduceți numărul pentru a găsi rădăcină pătrată în Java: ') double square = scanner.nextDouble () double squareRoot = Math.sqrt (pătrat) System.out.printf (' Rădăcina pătrată a numărului:% f este:% f% n ', pătrat, squareRoot)} public void method2 () {System.out.println ('implementarea metodei2')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

Ieșire:

implementarea metodei 1 Introduceți numărul pentru a găsi rădăcina pătrată în Java: 16 Rădăcina pătrată a numărului: 16.0 este: 4.0
  • O clasă poate implementa mai multe moșteniri la o singură instanță. Să ne înțelegem prin următorul cod.

// Codul interfeței 1

ce este rmi în java
pachet ExtendInt public interface Interface1 {public void armstrong ()}

// Codul interfeței 2

pachet ExtendInt public interface Interface2 {public void prime ()} // Cod pachet ExtendInt public class Edureka2 implementează 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 ('numărul armstrong') else System.out.println („Numărul nu este armstrong”) System.out.println („Extinderea la interfața 1”)} public void prime () {int i, m = 0, flag = 0 int n = 3 // input m = n / 2 if (n == 0 || n == 1) {System.out.println (n + 'nu este numărul prim')} else {for (i = 2i & lt = mi ++) {if (n% i == 0) {System .out.println (n + 'nu este numărul prim') flag = 1 break}} if (flag == 0) {System.out.println (n + 'is number prime')}} System.out.println ('Extending la interfața 2 ')} public static void main (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}

Ieșire:

3 este numărul prim Extinderea la interfața 2 numărul armstrong Extinderea la interfața 1
  • Interfața Java necesită inițializarea variabilelor declarate în momentul declarării.
  • Modificatorii de acces pentru o interfață sunt setate în mod implicit la statice publice și finale. Să înțelegem acest lucru printr-un exemplu

// Cod de interfață

pachet test interfață publică Încercați {// public int a = 10 // public static final int a = 10 // static int a = 0 // final int a = 10 // int a = 10}
  • Toate declarațiile de mai sus sunt adevărate și valide în interiorul unei interfețe.
  • Interfața Java este capabilă să extindă orice număr de interfețe, dar nu poate implementa niciodată una.
  • O clasă Java poate implementa orice număr de interfețe.
  • Clasa Java nu poate implementa interfețe cu același nume de metodă și tip de returnare diferit.
  • Dacă există două sau mai multe metode cu același nume de metodă, există în mai multe interfețe, atunci implementarea metodei pentru o dată este suficientă. Să înțelegem acest lucru cu un exemplu practic.

// Cod de interfață

împachetează aceeași interfață publică A {public void display ()} // Cod de interfață ambalează aceeași interfață publică B {public void display ()} // Cod pachet Cod aceeași clasă implementează A, B {public void display () {System.out .println ('afișarea datelor')} public static void main (String [] args) {same print = new same () print.display ()}}

Ieșire:

Bine ați venit la Edureka E-Learning

Cu aceasta, ajungem la sfârșitul acestui articol. Sper că ați înțeles importanța interfeței, a sintaxei, a funcționalității, a imbricării interfeței, a punctelor cheie ale interfeței Java și a operațiunilor efectuate folosindu-le.

Acum că ați înțeles elementele de bază ale Java, verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru studenți și profesioniști care doresc să fie dezvoltator Java. Cursul este conceput pentru a vă oferi un început avansat în programarea Java și pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate și Primăvară .

Ai o întrebare pentru noi? Menționați-l în secțiunea de comentarii a acestui blog „Interfață Java” și vă vom contacta cât mai curând posibil.