' Interface er et avanceret niveau for opnåelse af abstraktion på Java Programming Language. Java-interface hjælper med reduktion af kompleksitet i koden og forenkler læsbarhed . I denne artikel vil jeg forklare dig Java-interface gennem følgende docket.
- Hvad er et Java-interface?
- Hvorfor har vi brug for et interface?
- Erklæring om et Java-interface: Syntaks
- Eksempel på Java-interface
- Indlejring af Java-grænsefladen
- Forskel mellem klasse og interface
- Fordele og ulemper ved grænsefladen
- Nøglepunkter på Java-interface
Hvad er et Java-interface?
Computerinterface er kendt som en grænse, der adskiller to eller flere systemer. Det udveksler data mellem komponenterne i et system, der kan signalere, kommandoer eller protokoller.
Java Abstraction giver funktionaliteten af en bestemt metode ved at skjule implementeringslogikken, der er skrevet inde i metoden. Tilsvarende er Java-interface også en abstrakt klasse, der inkluderer metodedeklarationen, men ikke dens definition. En klasse redskaber et interface til at arve de abstrakte metoder. Sammen med abstrakte metoder, en interface kan også omfatte konstanter, statiske metoder, indlejrede grænseflader og standardmetoder.
ssis tutorial for begyndere 2012 med eksempler
Ligheder mellem en klasse og en grænseflade.
En grænseflade svarer fuldstændigt til en normal klasse i Java. En grænseflade inkluderer de abstrakte metoder, og disse metoder er designet til at blive implementeret. Denne proces er kun lig med arv, hvilket er normalt, når det kommer til klasser. Vi vil diskutere mere om ligheder.
- Samme som en klasse, en grænseflade kan også indeholde så mange antal metoder som nødvendigt.
- Svarende til klasser er grænsefladen også skrevet med en .java fil til udvidelse.
- Overraskende nok vil bytekoden til en grænseflade have vist sig i en .klasse fil.
- En grænseflade vises i form af en pakke, og deres respektive bytecode er i en mappe, der matcher pakkenavnet.
Hvorfor har vi brug for et interface?
Java understøtter ikke Flere arv, på grund af hvilket, Det tillader ikke klasser at udvide mere end en klasse ad gangen. Børneklasser kunne ikke arve egenskaberne af flere forældreklasser i en enkelt instans, som det resulterer i Diamantproblem. For at løse dette problem, Interface introduceres. Lad os forstå dette problem gennem et eksempel.
Lad os antage, at vi har to plan, den ene kan kun bære passagerer, kun den anden position. Nu skal vi arve egenskaberne for både lastflyet og passagerflyet. Java understøtter ikke denne løsning, da den ender i tvetydighed mellem de to fly.
Men hvis du kan gøre det muligt ved at få Java til at føle, at det arver et plan og implementerer metoderne til stede i det andet plan. Det er som et kommercielt fly, der tager både passagerer og fragtbagage. Interfacet er som at lave et større plan, som kunne udføre begge opgaver uden at forstyrre hinandens komponenter, i stedet for bare at låne metoderne fra Interface klasse.
// Klasse A-kode
pakke flere klasse A {void msg () {System.out.println ('Hej')}}
// Klasse B-kode
pakke flere klasse B {void msg () {System.out.println ('Welcome')}}
Klasse C-kode
pakke flere klasse C udvider A, B {// Dette accepteres ikke af Java, det kaster en fejl, og koden udføres ikke. public static void main (String args []) {C obj = new C () obj.msg ()}}
Produktion:
Fejl. Denne særlige tilgang kaster en undtagelse. Java understøtter ikke flere arv. Denne fejl kaldes Diamantproblem
Lad os prøve en løsning ved hjælp af en grænseflade, Børneklasser kan få adgang til metoderne fra Flere forældre klasser i en enkelt instans.
// Interface kode
pakke MIS-løsning til offentlig grænseflade {public void Hello () public void Welcome ()}
// Klassekode
pakke MIS public class classA implementerer løsning {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('Welcome to Edureka ')} offentlig statisk ugyldig hoved (String [] args) {classA Edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}
Produktion:
Hej Verden
Velkommen til Edureka
Erklæring om et Java-interface: Syntaks
interface interface_name {// erklære konstante felter // erklære metoder () // standardmetoder}
Lad os gennemgå et eksempel på Java Interface
Eksempel på Java-interface
Lad os oprette en simpel lommeregner baseret på Java-interface.
// Interface kode
pakke basicoperations offentlig grænseflade matematik {public void add () public void sub () public void mul () public void div ()}
// Klassekode
pakke basicoperations import java.util.Scanner public class student1 implementerer matematik {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('Indtast to heltalsværdier for at udføre tilføjelse') int a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Summen af' + a + 'og' + b + 'er' + s)} @ Overstyr offentlig ugyldig sub () {Scanner kb = ny Scanner (System.in) System.out.println ('Indtast to heltalsværdier for at udføre substration') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('Forskellen mellem' + a + 'og' + b + 'er' + s)} @ Override public void mul () {Scanner kb = new Scanner (System.in) System.out.println ('Enter en hvilken som helst to heltal multiplikation ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' Produkt af '+ a +' og '+ b +' er '+ 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 ('Kvotient af' + a + 'og' + b + 'er' + s)} offentlig statisk ugyldig hoved (String [] args) {student1 Edureka1 = new student1 () Edureka1.add () Edureka1.sub () Edureka1. mul () Edureka1.div ()}}
Produktion:
Når vi går videre, lærer vi at indlejre et Java-interface.
Indlejring af Java-grænsefladen
Interface indlejring er en proces med at erklære et interface inde i et andet Eksisterende grænseflade eller erklære en grænseflade inde i en Klasse. Den indlejrede grænseflade er også kendt som en Indre grænseflade.
Den indlejrede grænseflade er ikke tilgængelig direkte . Derfor er Nesting implementeret for at løse navneområderne ved at gruppere dem med deres relaterede Grænseflader og Klasser. Ved denne procedurevi kan kalde Indlejret grænseflade gennem Ydre klasse eller Ydre interface navn efterfulgt af a prik (.) og Interface navn.
Lad os prøve nogle eksempler baseret på Interface indlejring. Lad os først prøve at rede en Java-interface inde i en anden Java-interface som vist nedenfor:
// Interface kode
pakke Nest offentlig grænseflade OuterInterface {ugyldig skærm () grænseflade InnerInterface {ugyldig InnerMethod ()}}
// Klassekode
pakke Nest-klasse NestedInterfaceDemo implementerer 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 ')} offentlig statisk ugyldig hoved (String args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}
Produktion:
Første 10 termer: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + Udskrivning fra Nested InnerInterface-metoden ...!
Lad os nu prøve at rede en Java-interface inde i en Java-klasse.
// Interface kode
pakke Nest2 public class EdurekaClass {interface EdurekaInterface {void NestedMethod ()}}
// Klassekode
pakke Nest2 klasse NestedInterfaceDemo2 implementerer EdurekaClass.EdurekaInterface {public void NestedMethod () {String input = 'Edureka' byte [] strAsByteArray = input.getBytes () byte [] result = new byte [strAsByteArray.length] for (int i = 0Astray) .længde i ++) resultat [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 ()}}
Produktion:
akerudE
Selvom et interface næsten ligner en klasse, er der nogle forskelle mellem dem. Lad os diskutere deres forskelle.
Forskel mellem Java Class og Java Interface
INTERFACE | KLASSE |
Understøtter flere arv | Understøtter ikke flere arv |
Har ikke datamedlemmer | Inkluderer datamedlemmer |
Har ikke konstruktører | Inkluderer konstruktører |
Inkluderer ufuldstændige medlemmer (underskriftsmedlem) | Omfatter både komplette (abstrakte) og ufuldstændige medlemmer |
Har ikke adgangsmodifikatorer | Inkluderer adgangsmodifikatorer |
Interfacet har ikke statiske medlemmer | Klassen har alle sine medlemmer som statisk |
Fordele og ulemper ved Java Interface
Fordele:
- Java-interface understøtter Flere arv.
- Java Interface gør det muligt for programmører at opdele de komplekse programmeringsmetoder og forenkle afhængigheder mellem objekterne.
- Java Interface gør datamedlemmer og metoder i en applikation, der skal kobles løst.
Ulemper:
- Brug af Java Interface bringer ned udførelseshastighed af ansøgningen.
- Java-grænseflader i applikationen bruges enten gentagne gange i stor udstrækning eller næsten ikke brugt overhovedet.
Nøglepunkter på Java-interface
- Ingen af metoderne, der er angivet i grænsefladen, har et organ, der gør det til at give fuldstændig abstraktion.
- Det er ikke muligt at oprette et objekt i en grænseflade. Instantiering af et interface er derfor ikke mulig.
- En klasse kan implementere en grænseflade ved hjælp af nøgleordsimplementerne. Lad os se dette gennem et eksempel.
// Interface kode
pakke extInterface offentlig grænseflade extInterface {public void method1 () public void method2 ()}
// Klassekode
pakke extInterface import java.util.Scanner klasse Edureka implementerer extInterface {public void method1 () {System.out.println ('implementering af metode1') Scannerscanner = ny Scanner (System.in) System.out.println ('Indtast nummer for at finde kvadratrod i Java: ') dobbelt kvadrat = scanner.nextDouble () dobbelt kvadratRoot = Math.sqrt (kvadrat) System.out.printf (' Kvadratrod af tal:% f er:% f% n ', kvadrat, squareRoot)} public void method2 () {System.out.println ('implementering af method2')} public static ugyldig main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}
Produktion:
implementering af metode1 Indtast nummer for at finde kvadratroden i Java: 16 Kvadratrod af nummer: 16.0 er: 4.0
- En klasse kan implementere flere arv på en enkelt forekomst. Lad os forstå det gennem følgende kode.
// Interface 1-kode
pakke ExtendInt public interface Interface1 {public void armstrong ()}
// Interface 2-kode
pakke ExtendInt offentlig grænseflade Interface2 {public void prime ()} // Klassekode pakke ExtendInt public class Edureka2 implementerer Interface1, Interface2 {public void armstrong () {int c = 0, a, temp int n = 153 // input temp = n mens (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a)} hvis (temp == c) System.out.println ('armstrong number') ellers 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 // input m = n / 2 if (n == 0 || n == 1) {System.out.println (n + 'er ikke primtal')} ellers {for (i = 2i & lt = mi ++) {hvis (n% i == 0) {System .out.println (n + 'er ikke primtal') flag = 1 pause}} hvis (flag == 0) {System.out.println (n + 'er primtal')}} System.out.println ('Udvider til interface 2 ')} offentlig statisk ugyldig hoved (String args []) {Interface2 obj = new Edureka2 () obj.prime () Interface1 obj1 = new Edureka2 () obj1.armstrong ()}}
Produktion:
3 er primtal udvider til interface 2 armstrong nummer udvider til interface 1
- Java-interface kræver, at de erklærede variabler initialiseres på erklæringstidspunktet.
- Adgangsmodifikatorer til en grænseflade er som standard indstillet til offentlig statisk og endelig. Lad os forstå dette ved et eksempel
// Interface kode
pakke test offentlig grænseflade Prøv {// public int a = 10 // public static final int a = 10 // static int a = 0 // final int a = 10 // int a = 10}
- Alle ovenstående erklæringer er sande og gyldige i et interface.
- Java-interface er i stand til at udvide et hvilket som helst antal grænseflader, men kan aldrig implementere en.
- En Java-klasse kan implementere et hvilket som helst antal grænseflader.
- Java Class kan ikke implementere grænseflader med samme metode navn og anden returtype.
- Hvis der er to eller flere metoder med det samme metodenavn, findes i flere grænseflader, er det nok at implementere metoden én gang. Lad os forstå dette med et praktisk eksempel.
// Interface kode
pakke samme offentlige grænseflade A {public void display ()} // Interface Code package same public interface B {public void display ()} // Class Code package same class same implements A, B {public void display () {System.out .println ('displaying data')} public static void main (String [] args) {same print = new same () print.display ()}}
Produktion:
Velkommen til Edureka E-Learning
Med dette kommer vi til slutningen af denne artikel. Jeg håber, du har forstået vigtigheden af grænseflade, syntaks, funktionalitet, grænsefladeindlejring, nøglepunkter i Java-grænseflade og handlinger, der udføres ved hjælp af dem.
Nu hvor du har forstået det grundlæggende i Java, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Forår .
Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne 'Java Interface' -blog, og vi vender tilbage til dig hurtigst muligt.