? Utvecklare utformade Java från grunden för att fungera som ett komplett objektorienterat programmeringsspråk . På grund av detta begrepp integrerade till objektorienterad programmering blivit ganska viktigt i grundläggande Java -funktionalitet . Särskilt begreppen klass arv ( och de problem som uppstår arv formulär klass ) är grundläggande frågor till Java-programmerare . Ett av dessa problem , multipelt arv , kan kringgås med en förståelse för hur arv fungerar , och hur man använder Java -gränssnitt . OOP och Arv
Objektorienterad programmering använder begreppet arv att utöka funktionerna i objekten . Tänk när en programmerare skapar ett objekt , hon kanske senare upptäcker att hon måste skapa en mycket liknande objekt med endast små skillnader ( kanske för att utöka funktionaliteten i den föregående objekt i en ny kontext ) . Det är där arv kommer in ett föremål som en programmerare " härstammar " från en annan " base " ärver metoder och variabler för den klassen , och kan sedan lägga till fler funktioner till den ( som i följande Java exemplet ) :
public class Sphere {
public int radie ,
}
public class Ball utökar Sphere {
public string färg , //boll tillägger den " färg " variabel , utan också använder " radie " variabel
}
multipelt arv
Vid något tillfälle , kanske en programmerare blir frestad att härleda en enda klass från flera klasser. Detta är känt som " multipelt arv " och samtidigt till synes användbara , kan orsaka problem, såsom den ökända " diamond problem . " Diamanten Problemet uppstår när två klasser ärver från samma klass ( t.ex. klass B och C som härrör från klass A ) , medan en annan klass ( D ) ärver från både B och C. När en D -objekt skapas , behandlar systemet det som en typ av basklassen ( class " Ball " är en " sfär ", till exempel ) . I diamant problemet , kan systemet avgöra inte avgörande vilken klass D är ( det är typ ABD eller typ ACD ? ) Som orsakar problem .
Java och multipelt arv
på grund av problemen med multipelt arv , tillåter Java inte multipelt arv . Emellertid kan faktiskt härrör klasser från flera basklasser åstadkommas på ett säkert sätt genom användning av " gränssnitt . " Ett gränssnitt liknar en klass , förutom att den bara gör definierar strukturen för klassen men inte den faktiska koden . En basklass som implementerar ett gränssnitt inte nödvändigtvis " ärver " funktionaliteten av gränssnittet : det lovar bara att använda sin struktur . Eftersom en klass som implementerar ett gränssnitt inte ärver från en annan klass ( och detta är inte en typ av basklass ) , då programmeraren kan implementera flera gränssnitt med samma klass
Exempel : . Arv och gränssnitt
följande exempel visar skillnaden mellan objektet arv och ett gränssnitt . Viktigt är en klass som ärver från en annan får tillgång till basen klassen eftersom det i huvudsak blir en typ av den klassen (som i "klumpa ihop " och " Sphere " klasser ) . En klass som implementerar ett gränssnitt lovar endast att genomföra struktur gränssnitt : Det är inte en typ av det gränssnittet :
gränssnitt Basic {
int DoubleA ( ) , //meddelande : nej faktiska koden definieras i gränssnittet
}
public class B implementerar Basic {
public int a;
public int DoubleA ( ) //klass B måste definiera " DoubleA ( ) " metoden för att genomföra " Basic "
{return a * 2 ;}
}