Nøkkelforskjell – arv vs grensesnitt i Java
Java er et programmeringsspråk utviklet av Sun Microsystems. Java kan brukes til å utvikle ulike applikasjoner. Det er et multi-paradigme språk som støtter objektorientert, strukturert osv. Hovedfordelen med Java er at den støtter objektorientert programmering (OOP). Programmereren kan lage klasser og objekter. Det er fire pilarer i OOP. De er arv, polymorfisme, abstraksjon og innkapsling. Arv og grensesnitt er relatert til OOP. Den viktigste forskjellen mellom arv og grensesnitt er at arv er å utlede nye klasser fra eksisterende klasser og et grensesnitt er å implementere abstrakte klasser og multippel arv.
Hva er arv i Java?
Arv kan oppnå kodegjenbrukbarhet. Arv hjelper til med å gjenbruke attributtene og metodene til en eksisterende klasse. Mekanismen for å utlede ny klasse ved å bruke gammel klasse kalles arv. Den gamle klassen er kjent som foreldreklasse eller superklasse. Den avledede klassen kalles barneklasse eller underklasse.
Syntaksen for Java-arv er som følger.
class subclass_name utvider superclass_name {
variabelerklæring;
metodeerklæring;
}
Arvebegrepet kan forklares ved å bruke følgende eksempel. Anta at det er en klasse k alt A som følger.
offentlig klasse A{
public void sum(){
System.out.println(“Sum”);
}
}
Hvis vi vil legge til en ny metode uten å endre den eksisterende klassen, kan vi gjøre det som følger.
offentlig klasse B{
public void sub(){
System.out.println(“Sub”);
}
}
Programmer kan bruke arv for å bruke klasse A sum().
public klasse B utvider klasse A{
public void sub(){
System.out.println(“Sub”);
}
}
I hovedfunksjonen er det mulig å lage et objekt av B og kalle sub(), som tilhører klasse B og sum(), som tilhører klasse A ved hjelp av arv.
public static void main(String args){
B obj=new B();
obj.sub();
obj.sum();
}
Det finnes ulike typer arv. De er enkeltarv, multippelarv, flernivåarv og hierarkisk arv. I enkeltarv er det én grunnklasse og én avledet klasse. I flernivåarv er det tre klasser, nemlig basisklasse, mellomklasse og avledet klasse. Mellomklassen arver fra basisklassen, og avledet klasse arver fra mellomklassen. I hierarkisk arv er det én basisklasse og mange avledede klasser. Det er en spesiell type kjent som hybrid arv. Det er en kombinasjon av to eller flere typer arv.
Figur 01: Arv
I multippel arv er det mange basisklasser og en avledet klasse. Anta at klasse A og B er basisklassene. Klasse C er den avledede klassen. Hvis både A- og B-klassene har samme metode og programmereren kaller den metoden fra den avledede klassen, vil det forårsake et tvetydighetsproblem. Å arve to klasser kan forårsake en kompileringsfeil. Derfor støttes ikke multippel arv i Java. Et grensesnitt kan brukes til å løse dette problemet.
Hva er grensesnitt i Java?
Abstraksjon er en prosess for å skjule implementeringsdetaljene og vise bare funksjonene til brukeren. Abstraksjon kan oppnås ved å bruke abstrakte klasser eller grensesnitt. En abstrakt metode er en metode uten implementering. En klasse med minst én abstrakt metode er en abstrakt klasse. Eksempel på en abstrakt klasse er som følger.
abstrakt klasse A{
abstract void sum();
}
Anta at det er to abstrakte klasser som A og B. For å implementere abstrakte metoder for A og B, opprettes en ny klasse C. Da bør klasse C utvide både A og B., men multippel arv støttes ikke i Java. Derfor bør du bruke grensesnitt. Grensesnitt kan brukes til å deklarere metoder, men det er ikke mulig å definere metoder. Det er ikke mulig å lage et objekt ved hjelp av grensesnitt. Klasse C bør implementere alle metoder i grensesnitt A og B.
grensesnitt A{
void sum();
}
grensesnitt B{
void sub();
}
klasse C implementerer A, B{
public void sum(){
System.out.println(“Summation”);
}
public void sub(){
System.out.println(“Subtraksjon”);
}
}
Nå, i hovedprogrammet er det mulig å lage et objekt av C og kalle begge metodene.
public static void main (String args) {
C obj=new C();
obj.sum();
obj.sub();
}
Så grensesnitt kan brukes til å implementere multippel arv.
En annen bruk av grensesnitt er at det gir sikkerhet. Se koden nedenfor.
grensesnitt A {
void sum ();
}
klasse B implementerer A {
offentlig ugyldig sum () {
System.out.println(“Summation”);
}
public void multipliser () {
System.out.println(“Multiplication”);
}
}
Når du oppretter et objekt av B, er det mulig å kalle begge metodene sum () og multiplisere (). Hvis programmereren ønsker å begrense bruk av multiplikasjonsfunksjonen () er det mulig som følger.
public static void main(String args){
A obj=new B();
obj.sum();
}
A obj=ny B(); vil lage et objekt. Den er av type A og minnet er allokert som B. Det er mulig å kalle sum() men kan ikke utføre multiply(). Denne begrensningen gjøres ved hjelp av grensesnitt.
Hva er likhetene mellom arv og grensesnitt i Java?
- Begge konseptene er relatert til objektorientert programmering
- Begge representerer IS-A-forhold.
Hva er forskjellen mellom arv og grensesnitt i Java?
Arv vs grensesnitt i Java |
|
Inheritance er et OOP-konsept for å utlede nye klasser fra de eksisterende klassene. | Grensesnitt er en mekanisme i OOP for å implementere abstraksjon og multippel arv. |
Usage | |
Inheritance gir kodegjenbrukbarhet. | Grensesnitt gir abstraksjon og multippel arv. |
Summary – Arv vs grensesnitt i Java
Java er et multi-paradigme programmeringsspråk som støtter objektorientert programmering. Arv og grensesnitt er relatert til objektorientert programmering. Forskjellen mellom arv og grensesnitt er at arv er å utlede nye klasser fra eksisterende klasser og grensesnitt er å implementere abstrakte klasser og multippel arv.
Last ned PDF-versjonen av Inheritance vs Interface i Java
Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til offline-formål i henhold til sitat. Last ned PDF-versjon her Forskjellen mellom arv og grensesnitt i Java