Ett viktigt begrepp i objektorienterad programmering är arv. Det ger ett sätt för objekt att definiera relationer med varandra. Som namnet antyder kan ett objekt ärva egenskaper från ett annat objekt.
Mer konkret kan ett objekt förmedla sitt tillstånd och beteenden till sina barn. För att arv ska fungera måste föremålen ha egenskaper som är gemensamma med varandra.
I Java kan klasser tas från andra klasser, som kan tas från andra, och så vidare. Det beror på att de kan ärva funktioner från klassen ovanför, ända upp till den översta objektklassen.
Låt oss säga att vi skapar en klass som heter Human som representerar våra fysiska egenskaper. Det är en generisk klass som kan representera dig, mig eller vem som helst i världen. Dess tillstånd håller koll på saker som antalet ben, antal armar och blodtyp. Det har beteenden som att äta, sova och gå.
Människan är bra för att få en övergripande känsla av vad som gör oss alla lika men det kan till exempel inte berätta för mig om könsskillnader. För det måste vi göra två nya klasstyper som heter Man och kvinna. Tillståndet och beteendet hos dessa två klasser kommer att skilja sig från varandra på många sätt förutom de som de ärver från Human.
Därför gör arv oss att omfatta föräldraklassens tillstånd och beteenden i sitt barn. Barnklassen kan sedan utöka tillstånd och beteenden för att återspegla de skillnader som den representerar. Den viktigaste aspekten av detta koncept att komma ihåg är att barnklassen är en mer specialiserad version av föräldern.
I förhållandet mellan två objekt är en superklass det namn som ges till klassen som ärvs från. Det låter som en superduperklass, men kom ihåg att det är den mer generiska versionen. Bättre namn att använda kan vara basklass eller helt enkelt föräldraklass.
För att ta ett mer verkligt exempel den här gången kan vi ha en superklass som heter Person. Dess tillstånd har personens namn, adress, höjd och vikt, och har beteenden som att shoppa, göra sängen och titta på TV.
Vi kunde skapa två nya klasser som ärver från person som heter Student och arbetare. De är mer specialiserade versioner eftersom även om de har namn, adresser, titta på TV och shoppa har de också egenskaper som skiljer sig från varandra.
Arbetare kan ha ett tillstånd som har en anställningsnamn och anställningsplats medan studenten kan ha information om ett studieområde och en lärosäten.
Föreställ dig att du definierar en personklass:
offentlig klass person
En ny klass kan skapas genom att utöka denna klass:
offentlig klass anställd förlänger person
Personklassen sägs vara anställdsklassens superklass.