Hva er grensesnitt i Java?
Et grensesnitt i Java- programmering er definert som en abstrakt type som brukes til å spesifisere oppførselen til en klasse. Et Java-grensesnitt inneholder statiske konstanter og abstrakte metoder. En klasse kan implementere flere grensesnitt. I Java blir grensesnitt deklarert ved hjelp av grensesnittet. Alle metodene i grensesnittet er implisitt offentlige og abstrakte.
Syntaks for deklarerende grensesnitt
interface {//methods}
For å bruke et grensesnitt i klassen, legg til nøkkelordet "implementerer" etter klassenavnet ditt etterfulgt av grensesnittnavnet.
Eksempel på implementeringsgrensesnitt
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Klikk her hvis videoen ikke er tilgjengelig
Hvorfor kreves et grensesnitt?
For å forstå begrepet Java Interface bedre, la oss se et eksempel. Klassen "Media Player" har to underklasser: CD-spiller og DVD-spiller. Hver har sin unike implementeringsmetode for å spille musikk.
En annen klasse "Combo drive" arver både CD og DVD (se bildet nedenfor). Hvilken spillemetode skal den arve? Dette kan forårsake alvorlige designproblemer. Og derfor tillater ikke Java flere arv.
La oss nå ta et annet eksempel på hund.
Anta at du har et krav der klasse "hund" arver klasse "dyr" og "Pet" (se bildet nedenfor). Men du kan ikke utvide to klasser i Java. Så hva ville du gjort? Løsningen er Interface.
Regelbok for grensesnitt sier:
- Et grensesnitt er 100% abstrakt klasse og har bare abstrakte metoder.
- Klassen kan implementere et hvilket som helst antall grensesnitt.
Klassehund kan utvides til klasse "Animal" og implementere grensesnitt som "Pet".
Java-grensesnitteksempel:
Trinn 1) Kopier følgende kode til en redaktør.
grensesnitt Pet {offentlig ugyldighetstest ();}klasse Hundeverktøy Pet {offentlig ugyldighetstest () {System.out.println ("Implementert grensesnittmetode");}public static void main (String args []) {Pet p = ny hund ();p.test ();}}
Trinn 2) Lagre, kompiler og kjør koden. Følg utdataene.
Forskjellen mellom klasse og grensesnitt
Klasse | Grensesnitt |
---|---|
I klassen kan du starte en variabel og opprette et objekt. | I et grensesnitt kan du ikke instantiere variabel og opprette et objekt. |
Klassen kan inneholde konkrete (med implementering) metoder | Grensesnittet kan ikke inneholde konkrete (med implementering) metoder |
Tilgangsspesifikatorene som brukes med klasser er private, beskyttede og offentlige. |
I grensesnitt brukes bare én spesifikator - Offentlig. |
Når skal jeg bruke grensesnitt og abstrakt klasse?
- Bruk en abstrakt klasse når en mal må defineres for en gruppe underklasser
- Bruk et grensesnitt når en rolle må defineres for andre klasser, uavhengig av arvetreet til disse klassene
Må vite fakta om grensesnitt
- En Java-klasse kan implementere flere Java-grensesnitt. Det er nødvendig at klassen må implementere alle metodene som er angitt i grensesnittene.
- Klassen skal overstyre alle de abstrakte metodene som er angitt i grensesnittet
- Grensesnittet tillater sending av en melding til et objekt uten om hvilke klasser det tilhører.
- Klassen må tilby funksjonalitet for metodene som er angitt i grensesnittet.
- Alle metodene i et grensesnitt er implisitt offentlige og abstrakte
- Et grensesnitt kan ikke instantieres
- En grensesnittreferanse kan peke på objekter fra implementeringsklassene
- Et grensesnitt kan strekke seg fra ett eller flere grensesnitt. Klassen kan bare utvide en klasse, men implementere et hvilket som helst antall grensesnitt
- Et grensesnitt kan ikke implementere et annet grensesnitt. Det må utvide et annet grensesnitt om nødvendig.
- Et grensesnitt som er erklært inne i et annet grensesnitt, blir referert til som nestet grensesnitt
- På tidspunktet for erklæringen må grensesnittvariabelen initialiseres. Ellers vil kompilatoren kaste en feil.
- Klassen kan ikke implementere to grensesnitt i java som har metoder med samme navn, men forskjellige returtype.
Sammendrag :
- Klassen som implementerer grensesnittet, må gi funksjonalitet for metodene som er angitt i grensesnittet
- Alle metodene i et grensesnitt er implisitt offentlige og abstrakte
- Et grensesnitt kan ikke instantieres
- En grensesnittreferanse kan peke på objekter fra implementeringsklassene
- Et grensesnitt kan strekke seg fra ett eller flere grensesnitt. En klasse kan bare utvide en klasse, men implementere et hvilket som helst antall grensesnitt