Abstrakte klasser og grensesnitt er de to viktigste byggesteineneav . Selv om begge primært brukes til abstraksjon, er de veldig forskjellige fra hverandre og kan ikke brukes om hverandre. I denne artikkelen skal vi finne ut hva som er forskjellen mellom abstrakt klasse og grensesnitt i Java.
Temaene som er diskutert i denne artikkelen er som følger:
- Hva er en abstrakt klasse i Java?
- Grensesnitt i Java
- Abstrakt klasse mot grensesnitt
- Når skal jeg bruke abstrakt klasse og når bruke grensesnitt?
Å forstå forskjellene mellom abstrakt klasse og grensesnitt i , må du vite hva en abstrakt klasse er og hva et grensesnitt er. Så, la oss begynne med å diskutere hva det er.
Hva er abstrakt klasse i Java?
På ethvert programmeringsspråk, abstraksjon betyr å skjule de irrelevante detaljene fra brukeren for kun å fokusere på de essensielle detaljene for å øke effektiviteten og derved redusere kompleksiteten. I Java oppnås abstraksjon ved hjelp av abstrakte klasser . En abstrakt klasse fanger vanlige kjennetegn ved underklasser og inneholder kanskje ikke noen abstrakt metode. Det kan ikke instantieres, men kan bare brukes som en superklasse av underklassene. Her er et eksempel på et program som demonstrerer abstrakt klasse:
Merk: An abstrakt metode , er en metode som ikke er implementert på plass og legger tilufullstendighet til klasse .
pakke MyPackage // abstrakt klasse abstrakt klasse Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // erklære ikke-abstrakte metoder // det har standard implementering offentlig ugyldig BasicInfo (strengdetaljer) {System. out.println (this.AnimalName + '' + detaljer)} // abstrakte metoder som vil bli // implementert av underklassen (e) abstrakt offentlig ugyldig habitat () abstrakt offentlig ugyldig respirasjon ()} klasse Terrestrisk utvider dyr {// constructor Terrestrial (String name) {super (name)} @ Override public void habitat () {System.out.println ('leave on land and')} @ Override public void respiration () {System.out.println ('respire gjennom lunger eller luftrør. ')}} klasse Aquatic extensions Animal {// constructor Aquatic (String name) {super (name)} @ Override public void habitat () {System.out.println (' It leaves in water and ') } @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// oppretter objektet til terrestrisk klasse // og bruker Animal class reference. Dyrobjekt1 = nytt jordbasert ('Humans') objekt1.BasicInfo ('er terrestriske vesener, de') objekt1.habitat () objekt1.respirasjon () System.out.println ('') // oppretter objekter i sirkelklassen Animal object2 = nye Aquatic ('Fishes') object2.BasicInfo ('er aqautic vesener, de') object2.habitat () object2.respiration ()}}
Produksjon
Mennesker er jordiske vesener, de drar på land og respirerer gjennom lunger eller luftrør. Fiskene er akvatiske vesener, de blir igjen i vann og puster gjennom gjeller eller huden deres.
De Grunnleggende informasjon () er en metode som deles av Jordbasert og Akvatisk klasser. Siden Dyreklasse ikke kan initieres, vi lager objektene til Jordbasert og Akvatisk klasser for programmeringsformål. Neste gang har vi grensesnitt.
Grensesnitt i Java
En annen måte å oppnå abstraksjon i Java er ved å bruke grensesnitt .Et grensesnitt er en samling abstrakte metoder, det har ikke noe konkret , i motsetning til en abstrakt klasse. Men i motsetning til abstrakt klasse, gir et grensesnitt full abstraksjon i Java. Det kan ha både metoder og variabler akkurat som en klasse. Metodene som er angitt i et grensesnitt er imidlertid abstrakte som standard.Her er en demonstrerer abstrakt klasse:
pakke MyPackage-grensesnitt Dyr {// abstrakte metoder ugyldig habitat () ugyldig respirasjon ()} klasse TerrestrialA implementerer Dyr {String AnimalName = '' // konstruktør TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @ Override public void respiration () {System.out.println ('respire through lunges or trchea.')}} Klasse AquaticA implementerer dyr {String AnimalName = '' // konstruktør AquaticA (strengnavn) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Klasse JavaInterfaceDemo {public static void main (String [] args) {// skape objektet til Terrestrial class // og bruke Animal class reference . Dyr objekt1 = ny TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // oppretter objekter i sirkelklasse Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}
Produksjon
Mennesker drar på land og respirerer gjennom lunger eller luftrør. Fiskene går i vann og puster ut gjennom gjeller eller huden deres.
Hvis du ikke har noen felles kode mellom klasser , så kan du gå for grensesnittet. Et grensesnitt er mer som en blåkopi av en klasse, siden den ikke har noen ikke-abstrakte metoder.
Fra innholdet ovenfor har du kanskje lagt merke til nøkkelforskjellen mellom abstrakt klasse og grensesnitt i . Som er, i motsetning til abstrakt klasse, gir et grensesnitt fullt abstraksjon i Java. La oss gå videre og liste opp andre forskjeller.
Abstrakt klasse mot grensesnitt
Tabellen nedenfor viser nøkkelforskjellene mellom abstrakt klasse og grensesnitt.
Parameter | Abstrakt klasse | Grensesnitt |
Standard metodeimplementering | Det kan ha standard metode implementering | Grensesnitt gir ren abstraksjon og kan ikke implementeres i det hele tatt |
Variabler | Den kan inneholde ikke-endelige variabler. | Variabler deklarert i et grensesnitt er som standard endelige |
Nøkkelord brukt | En abstrakt klasse kan utvides ved å bruke nøkkelordet “extends hva er prosjektinnkjøpsstyring | Grensesnittet skal implementeres ved hjelp av nøkkelord-implementeringer |
Få tilgang til modifikatorer | Kanhar offentlig, beskyttet, privat og standardmodifikator | Grensesnittmetoder er som standard offentlige. Du kan ikke bruke noen annen tilgangsmodifikator med den |
Implementeringshastighet | Det er raskere enn grensesnittet | Et grensesnitt er noe langsommere og krever ekstra indireksjon |
Normal klasse | Den kan bare utvide en abstrakt klasse | Kan implementere flere grensesnitt |
Konstruktører | En abstrakt klasse kan ha konstruktører | Et grensesnitt kan ikke ha konstruktører |
Flere arv | En abstrakt klasse kan utvide en annen klasse og kan implementere flere Java-grensesnitt | Grensesnittet kan bare utvide et annet Java-grensesnitt overbelastning og overstyring i java |
Vel, nå er du nøkkelforskjellene mellom abstrakt klasse og grensesnitt i Java. Men hvordan bestemmer du når du skal bruke hvilken av disse to?
Når skal jeg bruke abstrakt klasse og når bruke grensesnitt?
Vurder å bruke abstrakte klasser i følgende tilfeller:
- Hvis du har noen relaterte klasser som må dele samme kodelinjer
- Når du vil definere ikke-statiske eller ikke-endelige felt
- Når det ermetoder eller felteller krever tilgangsmodifikatorer annet enn offentlig (for eksempel beskyttet og privat)
Vurder å bruke grensesnitt i følgende tilfeller:
- Når du vil oppnå ren abstraksjon
- Hvis du vil ansette flere , dvs,implementere mer enn ett grensesnitt
- Når du vil spesifisere oppførselen til en bestemt datatype, men ikke bekymret for hvem som implementerer oppførselen.
Dette fører oss til slutten av denne artikkelen. Jeg har dekket et av de ofte stilte Java-spørsmålene i Intervju, som er forskjellen mellom abstrakt klasse og grensesnitt i Java.
Forsikre deg om at du trener så mye som mulig og tilbakestiller opplevelsen.
Sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Vi er her for å hjelpe deg med hvert trinn på reisen, for å bli en foruten dette java-intervjuspørsmålene, kommer vi med en læreplan som er designet for studenter og fagpersoner som ønsker å være Java-utvikler.
Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet i dette ‘java Map-grensesnittet’ artikkel, og vi kommer tilbake til deg så snart som mulig.