Nyckelskillnad - Arv vs gränssnitt i Java
Java är ett programmeringsspråk utvecklat av Sun Microsystems. Java kan användas för att utveckla olika applikationer. Det är ett multiparadigmspråk som stöder objektorienterat, strukturerat etc. Den största fördelen med Java är att den stöder Object-Oriented programmering (OOP). Programmeraren kan skapa klasser och objekt. Det finns fyra pelare i OOP. De är arv, polymorfism, abstraktion och inkapsling. Arv och gränssnitt är relaterade till OOP. Huvudskillnaden mellan arv och gränssnitt är att arv är att härleda nya klasser från befintliga klasser och ett gränssnitt är att implementera abstrakta klasser och multipel arv.
INNEHÅLL
1. Översikt och nyckelskillnad
2. Vad är arv i Java
3. Vad är gränssnitt i Java
4. Likheter mellan arv och gränssnitt i Java
5. Jämförelse sida vid sida - Arv vs gränssnitt i Java i tabellform
6. Sammanfattning
Vad är arv i Java?
Arv kan uppnå kodåteranvändbarhet. Arv hjälper till att återanvända attribut och metoder för en befintlig klass. Mekanismen för att härleda ny klass med gammal klass kallas arv. Den gamla klassen är känd som föräldraklass eller superklass. Den härledda klassen kallas barnklass eller underklass.
Syntaxen för Java-arv är som följer.
klass underklassnamn utökar superklassnamn {
variabel deklaration;
metoddeklaration;
}
Arvskoncept kan förklaras med följande exempel. Antag att det finns en klass som heter A enligt följande.
allmän klass A {
offentlig ogiltig summa () {
System.out.println (“Summa”);
}
}
Om vi vill lägga till en ny metod utan att ändra den befintliga klassen kan vi göra det enligt följande.
allmän klass B {
public void sub () {
System.out.println (“Sub”);
}
}
Programmerare kan använda arv för att använda klass A-summan ().
offentlig klass B utökar klass A {
public void sub () {
System.out.println (“Sub”);
}
}
I huvudfunktionen är det möjligt att skapa ett objekt av B och anropa sub (), som tillhör klass B och sum (), som tillhör klass A med arv.
public static void main (String args) {
B obj = ny B ();
obj.sub ();
obj.sum ();
}
Det finns olika typer av arv. De är enstaka arv, flera arv, flernivåarv och hierarkiska arv. I enstaka arv finns en basklass och en härledd klass. I arv på flera nivåer finns det tre klasser, nämligen basklass, medelklass och härledd klass. Medelklassen ärver från basklassen och härledd klass ärver från mellanklassen. I hierarkisk arv finns det en basklass och många härledda klasser. Det finns en speciell typ som kallas hybrid arv. Det är en kombination av två eller flera typer av arv.
Figur 01: Arv
I flera arv finns det många basklasser och en härledd klass. Antag att klass A och B är basklasserna. Klass C är den härledda klassen. Om både A- och B-klasserna har samma metod och programmeraren anropar den metoden från den härledda klassen kommer det att orsaka tvetydighetsproblem. Att ärva två klasser kan orsaka ett kompileringsfel. Därför stöds inte flera arv i Java. Ett gränssnitt kan användas för att övervinna detta problem.
Vad är gränssnitt i Java?
Abstraktion är en process för att dölja detaljerna i implementeringen och endast visa användarens funktioner. Abstraktion kan uppnås med hjälp av abstrakta klasser eller gränssnitt. En abstrakt metod är en metod utan implementering. En klass med minst en abstrakt metod är en abstrakt klass. Exempel på en abstrakt klass är följande.
abstrakt klass A {
abstrakt ogiltig summa ();
}
Antag att det finns två abstrakta klasser som A och B. För att implementera abstrakta metoder för A och B skapas en ny klass C. Då bör klass C utöka både A och B., Men multipel arv stöds inte i Java. Därför bör använda gränssnitt. Gränssnitt kan användas för att deklarera metoder, men det är inte möjligt att definiera metoder. Det är inte möjligt att skapa ett objekt med gränssnitt. Klass C bör implementera alla metoder i gränssnitt A och B.
gränssnitt A {
ogiltig summa ();
}
gränssnitt B {
ogiltig sub ();
}
klass C redskap A, B {
offentlig ogiltig summa () {
System.out.println (“Summation”);
}
public void sub () {
System.out.println (“Subtraktion”);
}
}
Nu, i huvudprogrammet är det möjligt att skapa ett objekt av C och anropa båda metoderna.
public static void main (String args) {
C obj = ny C ();
obj.sum ();
obj.sub ();
}
Så gränssnitt kan användas för att implementera flera arv.
En annan användning av gränssnitt är att det ger säkerhet. Se koden nedan.
gränssnitt A {
ogiltig summa ();
}
klass B redskap A {
offentlig ogiltig summa () {
System.out.println (“Summation”);
}
offentligt tomrum multiplicera () {
System.out.println (“Multiplikation”);
}
}
När du skapar ett objekt av B är det möjligt att kalla båda metoderna sum () och multiplicera (). Om programmeraren vill begränsa användningen av funktionen multiplicera () är det möjligt enligt följande.
public static void main (String args) {
En obj = ny B ();
obj.sum ();
}
En obj = ny B (); kommer att skapa ett objekt. Det är av typ A och minnet allokeras som B. Det är möjligt att ringa summan () men kan inte utföra multiplicera (). Denna begränsning görs med gränssnitt.
Vad är likheterna mellan arv och gränssnitt i Java?
- Båda begreppen är relaterade till objektorienterad programmering
- Båda representerar IS-A-förhållande.
Vad är skillnaden mellan arv och gränssnitt i Java?
Skilja artikeln mitt före bordet
Arv vs gränssnitt i Java |
|
Arv är ett OOP-koncept för att härleda nya klasser från befintliga klasser. | Gränssnitt är en mekanism i OOP för att implementera abstraktion och multipel arv. |
Användande | |
Arv ger återanvändbar kod. | Gränssnitt ger abstraktion och flera arv. |
Sammanfattning - Arv vs gränssnitt i Java
Java är ett programmeringsspråk med flera paradigmer som stöder objektorienterad programmering. Arv och gränssnitt är relaterade till objektorienterad programmering. Skillnaden mellan arv och gränssnitt är att arv är att härleda nya klasser från befintliga klasser och gränssnitt är att implementera abstrakta klasser och flera arv.
Ladda ner PDF-versionen av Inheritance vs Interface i Java
Du kan ladda ner PDF-versionen av den här artikeln och använda den för offlineändamål enligt citat. Ladda ner PDF-versionen här Skillnaden mellan arv och gränssnitt i Java